tor257 0.1 → 0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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`�)�
|