tor257 0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1cc6459576a0d752b91848a555a9983ce97e75e0
4
+ data.tar.gz: dd188829c42d946c92c79abd27831bce0a2e830a
5
+ SHA512:
6
+ metadata.gz: 9fa19dd857c52a21eb240739a81a3baeeac58b69e06456ec3d7e4c9232373554b8fae5d970300f23fa4c7120eeb325b6d66f032a73c812ebacd47c3761ca5503
7
+ data.tar.gz: 65c788e83eeefbcbf6efc2de10b8c778b1251164d632bd3f1d4c5eb98ed721f30f74a8939f23a8364c747b466133176c81d2fcaa2876fd44ba4bbc5788f92094
checksums.yaml.gz.sig ADDED
Binary file
data/CHANGELOG ADDED
@@ -0,0 +1,3 @@
1
+ v0.1
2
+ - Initialize the project
3
+ - Implement algorithm
data/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # Installation
2
+
3
+ ```bash
4
+ gem install tor257
5
+ ```
6
+
7
+ # Usage
8
+
9
+ ```bash
10
+ $> tor257 --help
11
+ Usage: tor257 -p=keyphrase | -f=keyfile [-b=fd] [-v]
12
+ --verbose Developper mode (on STDERR)
13
+ --passphrase=pass Key (Passphrase)
14
+ --file=keyfile Key (File)
15
+ --base64=fd Output in ASCII Base64
16
+ ```
17
+
18
+ Example:
19
+ ```bash
20
+ $> echo "bonjour" | ./tor257 -p "ohk" -bout
21
+ BBeADBebFA==
22
+ $> echo "bonjour" | ./tor257 -p "ohk" -bout | ./tor257 -p "ohk" -bin
23
+ bonjour
24
+ ```
data/bin/tor257 ADDED
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require 'optparse'
5
+
6
+ module Argument
7
+
8
+ @@opt = nil
9
+ def self.parse
10
+ @@opt ||= OptionParser.new do |opts|
11
+ opts.banner = "Usage: tor257 -p=keyphrase | -f=keyfile [-b=fd] [-v]"
12
+
13
+ opts.on("--verbose", "Developper mode (on STDERR)") do
14
+ $verbose = true
15
+ end
16
+
17
+ opts.on("--passphrase=pass", "Key (Passphrase)") do |key|
18
+ $key = key
19
+ end
20
+
21
+ opts.on("--file=keyfile", "Key (File)") do |key|
22
+ raise "File #{key} does'nt exists !" unless File.exists? key
23
+ $key = File.read(key)
24
+ raise "File #{key} is empty !" if $key.empty?
25
+ end
26
+
27
+ opts.on("--base64=fd", "Output in ASCII Base64") do |fd|
28
+ $fi64 ||= (fd == "in")
29
+ $fo64 ||= (fd == "out")
30
+ require 'base64'
31
+ end
32
+
33
+ end.parse!
34
+
35
+ raise ArgumentError, "Key is required" unless $key
36
+ return @@opt
37
+
38
+ end
39
+
40
+ end
41
+
42
+ require 'tor257'
43
+
44
+ begin
45
+ Argument.parse
46
+ include Tor257
47
+
48
+ trap("SIGINT") do
49
+ exit 0
50
+ end
51
+ key = Key.new($key)
52
+ loop do
53
+ str = STDIN.gets
54
+ if str.nil?
55
+ exit 0
56
+ end
57
+ str.chomp!
58
+ str = $fi64 ? Base64.decode64(str) : str
59
+ # STDERR.puts "\"#{str}\""
60
+ m = Message.new str
61
+ out = m.encrypt(key)
62
+ STDOUT.puts $fo64 ? Base64.encode64(out) : out
63
+ end
64
+ rescue => err
65
+ puts "Error: #{err.message}"
66
+ puts err.backtrace.join("\n") if $verbose
67
+ end
@@ -0,0 +1,78 @@
1
+ # coding: utf-8
2
+
3
+ def TOR257_KEYS(k)
4
+ [
5
+ ((k << 0) & 0xff) + ((k & 0b00000000) >> 8),
6
+ ((k << 2) & 0xff) + ((k & 0b11000000) >> 6),
7
+ ((k << 5) & 0xff) + ((k & 0b11111000) >> 3),
8
+ ((k << 7) & 0xff) + ((k & 0b11111110) >> 1)
9
+ ]
10
+ end
11
+
12
+ def TOR257_KEY(k)
13
+ TOR257_KEYS(k).inject(&:^)
14
+ end
15
+
16
+ # @param b [Integer 8b]
17
+ # @param k [Integer 8b]
18
+ def TOR257(b, k)
19
+ return b ^ TOR257_KEY(k)
20
+ end
21
+
22
+ module Tor257
23
+
24
+ class Key < String
25
+
26
+ def subkey(i)
27
+ # return self[i % self.size].bytes
28
+ @koff = nil
29
+ _subkey(i % self.size)
30
+ end
31
+
32
+ private
33
+ def _subkey(i)
34
+ raise ArgumentError unless i.is_a? Integer
35
+ koff_update
36
+ if i >= self.size
37
+ @koff = nil
38
+ return []
39
+ end
40
+ i += @koff
41
+ return [self.bytes[i % self.size]] + _subkey(i)
42
+ # return self.bytes[i % self.size]
43
+ end
44
+
45
+ def koff_update
46
+ case @koff
47
+ when nil
48
+ @koff = 0
49
+ when 0, 5
50
+ @koff = 2
51
+ when 2
52
+ @koff = 5
53
+ end
54
+ end
55
+
56
+ end
57
+
58
+ class Message < String
59
+
60
+ def encrypt(key)
61
+ raise ArgumentError unless key.is_a? Key
62
+ i = 0
63
+ out = Message.new(self.bytes.map do |b|
64
+ skey = key.subkey(i)
65
+ skey.each{|k| b = TOR257(b, k) }
66
+ i += 1
67
+ b.chr
68
+ end.join)
69
+ out
70
+ end
71
+
72
+ def decrypt(key)
73
+ self.encrypt(key)
74
+ end
75
+
76
+ end
77
+
78
+ end
data/lib/tor257.rb ADDED
@@ -0,0 +1 @@
1
+ require_relative 'tor257/core.rb'
data/tor257.gemspec ADDED
@@ -0,0 +1,31 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'tor257'
3
+ s.version = '0.1'
4
+ s.date = Time.now.getgm.to_s.split.first
5
+ s.summary = File.read("CHANGELOG").match(/^v[^\n]+\n((\t[^\n]+\n)+)/m)[1].split("\t").join
6
+ s.description = 'An experimental encryption algorithm'
7
+ s.authors = ['poulet_a']
8
+ s.email = ['poulet_a@epitech.eu']
9
+ s.files = %w(
10
+ lib/tor257.rb
11
+ lib/tor257/core.rb
12
+
13
+ README.md
14
+ CHANGELOG
15
+
16
+ tor257.gemspec
17
+
18
+ bin/tor257
19
+ )
20
+ s.executables = %w(
21
+ tor257
22
+ )
23
+ s.homepage = 'https://github.com/pouleta/tor257'
24
+ s.license = 'GNU/GPLv3'
25
+
26
+ s.cert_chain = ['certs/nephos.pem']
27
+ s.signing_key = File.expand_path('~/.ssh/gem-private_key.pem') if $0 =~ /gem\z/
28
+
29
+ s.add_dependency 'nomorebeer', '~> 1.1'
30
+
31
+ end
data.tar.gz.sig ADDED
Binary file
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tor257
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - poulet_a
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRYwFAYDVQQDDA1hcnRo
14
+ dXIucG91bGV0MRkwFwYKCZImiZPyLGQBGRYJY3J5cHRvbGFiMRMwEQYKCZImiZPy
15
+ LGQBGRYDbmV0MB4XDTE1MTAwMzIxNTQyMFoXDTE2MTAwMjIxNTQyMFowSDEWMBQG
16
+ A1UEAwwNYXJ0aHVyLnBvdWxldDEZMBcGCgmSJomT8ixkARkWCWNyeXB0b2xhYjET
17
+ MBEGCgmSJomT8ixkARkWA25ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
+ ggEBANnLB9vH7/O0aUWi0f9VtC7F73zMC1OvxDaJq+qIcmGBFiKPOngDCRyKffWf
19
+ A6gyf7VsJAlDVFYoyNw7bzLFjBT9gkb5xmED3Uaxvt8Ax131YvKv0sTsQeiTVHHW
20
+ 1crq7266hW1McrFU2A1uQRV8FHuruUJBuP7UUYK7fZi0barbkdAIb4VvQFZxXByI
21
+ lKdQSuhu8k0RcG1vTACEsQXJIUImc8CWMi8/TG3HidJdASMvIWtV2rNQXlQ+UgIc
22
+ UeHC0p+SNTrc09H6q+5eH8NRYhJ91xKuLXv7NNy8M3quAMHcQ1GM6DWljc+Jc4cm
23
+ uAPQMYJf7Vy6OzWLoEiv2QU6sE0CAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
24
+ DwQEAwIEsDAdBgNVHQ4EFgQU08cDEZOTZNjP/0+E2unJWyw4NzQwJgYDVR0RBB8w
25
+ HYEbYXJ0aHVyLnBvdWxldEBjcnlwdG9sYWIubmV0MCYGA1UdEgQfMB2BG2FydGh1
26
+ ci5wb3VsZXRAY3J5cHRvbGFiLm5ldDANBgkqhkiG9w0BAQUFAAOCAQEAo60BuRZM
27
+ 5Vtn0H0kHHTPiXz09lwxx4cFpTqrTTM0T6qM3gKsR5eLyR1Rt5hGmYLPgY4ZW4zI
28
+ XcuDbgRJrczZs7AZNy5NXyVWpxCwkZzklpbGTuYQdFz7mKfVyALjLjrilOIktXcz
29
+ PvB7EoLlqYvq9cnwV3WE1MkRcBd07xpofcp0kxae2dCOZPUq24TcNaRe7Utw6jjA
30
+ iL0bcH7zZkzMsNoNpPAgsd3ovU4Mf9M+A3M8COmd7KzKyZ0k7P12u5InPWUsNQS2
31
+ tcYkgfqUJPitIJx1RvWZpIyH5uJhRUYK3+vU9nMOxez5WbIlC1TtpByKAPMX+sht
32
+ gib3AoIT8jh/2w==
33
+ -----END CERTIFICATE-----
34
+ date: 2015-10-20 00:00:00.000000000 Z
35
+ dependencies:
36
+ - !ruby/object:Gem::Dependency
37
+ name: nomorebeer
38
+ requirement: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '1.1'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.1'
50
+ description: An experimental encryption algorithm
51
+ email:
52
+ - poulet_a@epitech.eu
53
+ executables:
54
+ - tor257
55
+ extensions: []
56
+ extra_rdoc_files: []
57
+ files:
58
+ - CHANGELOG
59
+ - README.md
60
+ - bin/tor257
61
+ - lib/tor257.rb
62
+ - lib/tor257/core.rb
63
+ - tor257.gemspec
64
+ homepage: https://github.com/pouleta/tor257
65
+ licenses:
66
+ - GNU/GPLv3
67
+ metadata: {}
68
+ post_install_message:
69
+ rdoc_options: []
70
+ require_paths:
71
+ - lib
72
+ required_ruby_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ requirements: []
83
+ rubyforge_project:
84
+ rubygems_version: 2.4.8
85
+ signing_key:
86
+ specification_version: 4
87
+ summary: "- Initialize the project - Implement algorithm"
88
+ test_files: []
89
+ has_rdoc:
metadata.gz.sig ADDED
@@ -0,0 +1,2 @@
1
+ ���ߢ�Ty�-W�p�z���\3*Wg�|?�/� 81�#��g|y���ԂV���׎I [��\9��`� �Y���Aˀ���x�%�+��\bx�Z ���b���/q"N��m!S@��.����
2
+ a:wG���;����^_���Ư�~�Qd�+IAG�ݫe��)A�x�X�5�2>ln�����ќ�� ���-{WWu.R��X??�@