tor257 0.1

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 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??�@