tor257 0.1 → 0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGELOG +4 -0
- data/bin/tor257 +20 -8
- data/lib/tor257.rb +1 -1
- data/lib/tor257/Integer.rb +8 -0
- data/lib/tor257/core.rb +30 -15
- data/tor257.gemspec +2 -1
- metadata +3 -2
- metadata.gz.sig +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f89549934fb8710f963e0edacdb82adbd64d16eb
|
4
|
+
data.tar.gz: 872fa3a68230a6e00305340571e510d9b6eb8e01
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e1af237dd5dc985851ed96e031187cfc74648de9abe8249caff132b47db6637c9cea1773b6c8bd92c313ad887d2f06c8fbe73bb9656ed3184f07a68c56cca26
|
7
|
+
data.tar.gz: 747c227f786581177c1c59c8bd970963fd5e060d726b1871640fd2dc505f116fadee1217cfc47e19fb85c40bc719f341308530dd026cbed902a23c330458456d
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG
CHANGED
data/bin/tor257
CHANGED
@@ -10,10 +10,14 @@ module Argument
|
|
10
10
|
@@opt ||= OptionParser.new do |opts|
|
11
11
|
opts.banner = "Usage: tor257 -p=keyphrase | -f=keyfile [-b=fd] [-v]"
|
12
12
|
|
13
|
-
opts.on("--verbose", "
|
13
|
+
opts.on("--verbose", "More verbose") do
|
14
14
|
$verbose = true
|
15
15
|
end
|
16
16
|
|
17
|
+
opts.on("--debug", "Developper mode (on STDERR)") do
|
18
|
+
$debug = true
|
19
|
+
end
|
20
|
+
|
17
21
|
opts.on("--passphrase=pass", "Key (Passphrase)") do |key|
|
18
22
|
$key = key
|
19
23
|
end
|
@@ -39,29 +43,37 @@ module Argument
|
|
39
43
|
|
40
44
|
end
|
41
45
|
|
42
|
-
require 'tor257'
|
43
|
-
|
44
46
|
begin
|
45
47
|
Argument.parse
|
48
|
+
|
49
|
+
if $debug # to load local env
|
50
|
+
load Dir.pwd + '/lib/tor257.rb'
|
51
|
+
else
|
52
|
+
require 'tor257'
|
53
|
+
end
|
54
|
+
|
46
55
|
include Tor257
|
47
56
|
|
48
57
|
trap("SIGINT") do
|
49
58
|
exit 0
|
50
59
|
end
|
60
|
+
|
51
61
|
key = Key.new($key)
|
62
|
+
i = 0
|
52
63
|
loop do
|
53
|
-
str = STDIN.
|
64
|
+
str = STDIN.read 4096
|
54
65
|
if str.nil?
|
55
66
|
exit 0
|
56
67
|
end
|
57
|
-
str.chomp!
|
58
68
|
str = $fi64 ? Base64.decode64(str) : str
|
69
|
+
STDERR.puts "Bloc ##{i} [#{str}] with [#{key}]" if $verbose
|
59
70
|
# STDERR.puts "\"#{str}\""
|
60
71
|
m = Message.new str
|
61
72
|
out = m.encrypt(key)
|
62
|
-
STDOUT.
|
73
|
+
STDOUT.write $fo64 ? Base64.encode64(out) : out
|
74
|
+
i += 1
|
63
75
|
end
|
64
76
|
rescue => err
|
65
|
-
puts "Error: #{err.message}"
|
66
|
-
puts err.backtrace.join("\n") if $verbose
|
77
|
+
STDERR.puts "Error: #{err.message}"
|
78
|
+
STDERR.puts err.backtrace.join("\n") if $verbose
|
67
79
|
end
|
data/lib/tor257.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require_relative 'tor257/core
|
1
|
+
require_relative 'tor257/core'
|
data/lib/tor257/core.rb
CHANGED
@@ -1,28 +1,35 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
|
-
|
3
|
+
require_relative 'Integer'
|
4
|
+
|
5
|
+
def TOR257_KEYS(k, offsets)
|
4
6
|
[
|
5
|
-
(
|
6
|
-
(
|
7
|
-
(
|
8
|
-
(
|
7
|
+
k.ror(0 - offsets[0], 8),
|
8
|
+
k.ror(-2 - offsets[1], 8),
|
9
|
+
k.ror(-5 - offsets[2], 8),
|
10
|
+
k.ror(-7 - offsets[3], 8),
|
9
11
|
]
|
10
12
|
end
|
11
13
|
|
12
|
-
def TOR257_KEY(k)
|
13
|
-
TOR257_KEYS(k).inject(&:^)
|
14
|
+
def TOR257_KEY(k, offsets)
|
15
|
+
TOR257_KEYS(k, offsets).inject(&:^)
|
14
16
|
end
|
15
17
|
|
16
18
|
# @param b [Integer 8b]
|
17
19
|
# @param k [Integer 8b]
|
18
|
-
def TOR257(b, k)
|
19
|
-
return b ^ TOR257_KEY(k)
|
20
|
+
def TOR257(b, k, offsets)
|
21
|
+
return b ^ TOR257_KEY(k, offsets)
|
20
22
|
end
|
21
23
|
|
22
24
|
module Tor257
|
23
25
|
|
24
26
|
class Key < String
|
25
27
|
|
28
|
+
def initialize s
|
29
|
+
super(s)
|
30
|
+
raise ArgumentError, "Key must be at least 32 bits strong" if size() < 4
|
31
|
+
end
|
32
|
+
|
26
33
|
def subkey(i)
|
27
34
|
# return self[i % self.size].bytes
|
28
35
|
@koff = nil
|
@@ -55,17 +62,25 @@ module Tor257
|
|
55
62
|
|
56
63
|
end
|
57
64
|
|
65
|
+
# The message can be cut in 32 bits blocs
|
58
66
|
class Message < String
|
59
67
|
|
60
68
|
def encrypt(key)
|
61
69
|
raise ArgumentError unless key.is_a? Key
|
62
70
|
i = 0
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
71
|
+
rotate_matrix = [1, 2, 4, 8]
|
72
|
+
out = self.bytes.map do |b|
|
73
|
+
skey = key.subkey(i)
|
74
|
+
STDERR.write "[#{b}]\t+ [#{skey}\t>> #{rotate_matrix}]\t-> " if $verbose
|
75
|
+
skey.each_with_index do |k|
|
76
|
+
b = TOR257(b, k, rotate_matrix)
|
77
|
+
end
|
78
|
+
STDERR.write " [#{b}]\n" if $verbose
|
79
|
+
i += 1
|
80
|
+
rotate_matrix.rotate! 1 if i % 4 == 0 # bloc of 32
|
81
|
+
b.chr
|
82
|
+
end.join
|
83
|
+
out = Message.new(out)
|
69
84
|
out
|
70
85
|
end
|
71
86
|
|
data/tor257.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'tor257'
|
3
|
-
s.version = '0.
|
3
|
+
s.version = '0.2'
|
4
4
|
s.date = Time.now.getgm.to_s.split.first
|
5
5
|
s.summary = File.read("CHANGELOG").match(/^v[^\n]+\n((\t[^\n]+\n)+)/m)[1].split("\t").join
|
6
6
|
s.description = 'An experimental encryption algorithm'
|
@@ -8,6 +8,7 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.email = ['poulet_a@epitech.eu']
|
9
9
|
s.files = %w(
|
10
10
|
lib/tor257.rb
|
11
|
+
lib/tor257/Integer.rb
|
11
12
|
lib/tor257/core.rb
|
12
13
|
|
13
14
|
README.md
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tor257
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.2'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- poulet_a
|
@@ -59,6 +59,7 @@ files:
|
|
59
59
|
- README.md
|
60
60
|
- bin/tor257
|
61
61
|
- lib/tor257.rb
|
62
|
+
- lib/tor257/Integer.rb
|
62
63
|
- lib/tor257/core.rb
|
63
64
|
- tor257.gemspec
|
64
65
|
homepage: https://github.com/pouleta/tor257
|
@@ -84,6 +85,6 @@ rubyforge_project:
|
|
84
85
|
rubygems_version: 2.4.8
|
85
86
|
signing_key:
|
86
87
|
specification_version: 4
|
87
|
-
summary: "-
|
88
|
+
summary: "- Improve usability - Improve algorithm with bloc rotations"
|
88
89
|
test_files: []
|
89
90
|
has_rdoc:
|
metadata.gz.sig
CHANGED
@@ -1,2 +1,3 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
�w����QZp������8dY��y������4j�W�Ju1��L�A�ƥ��)_��(�[�
|
2
|
+
�I��L67.���c����ξ"�`�me��ӕs��f�����0��zn�)����&�"�o~@T�T��
|
3
|
+
�q��6fW1D�db�'U�k��u�B5�/��WV�>MkT������<�u��֏��Z�u���" p�ɉµ�%���|}1B�oo9��Q`�)�
|