shift_ciphers 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 13ef5b2fbf5292674972c5edcc94313197bb9ac92c1b9cd4562bf8a9a9ce4ba9
4
- data.tar.gz: efc143672e0bd32d311ed806f8c2987c842a5db0067dbba22fc2ad7420e6a422
3
+ metadata.gz: 43fd45b87cab5e9a8849d6a003a55aa0a63f99bcb1e21755f750cbfdf3096996
4
+ data.tar.gz: 8aa1034995754c8aaa6b8bddf26228dca338275d5e1c7c6ed18b1ec3c10aebb8
5
5
  SHA512:
6
- metadata.gz: 13b2ed0c1075700fe69956cf8ff8cd7e3d58143dca26849a42a9fa89e61ef59efcc4f96209273e806bb0ef0a82a09b6548efc2f4e4fcd0dfb7785df5cd9f9180
7
- data.tar.gz: 0d81a6dc37f73e6bf1b929f83a6b48fd9cdf89fa9314a96ed509ded86b2cf5ceb69f4e5f6967cdf03f0e2d2088a213b4188e1528f9bfed4e53fbbe0596619904
6
+ metadata.gz: a11aeb5c697cd93813ac957b39d2dea362cfbec4f50c725e6a2ed28bf1ac71dd40428f00049d4719034b89873797ec80debaa5ea7c807df837ae0af7dcf4d8a2
7
+ data.tar.gz: fa693ef53f90ec1d6e482cfbea1848d79cf447bc4778a66b40cc53171babdd8a4f73622b835cb2efc5bcc905080b7ad88514f46a7a3d6ed35eabbd026054c61c
@@ -46,6 +46,7 @@ module ShiftCiphers
46
46
  SEEDING_RAND_MAX = 2**31-1
47
47
 
48
48
  def initialize(key, max, initial_seed)
49
+ @key_stream = key.bytes.cycle
49
50
  @random = key.bytes.reduce(Random.new(initial_seed)) do |random, byte|
50
51
  Random.new(random.rand(SEEDING_RAND_MAX) ^ byte)
51
52
  end
@@ -54,7 +55,7 @@ module ShiftCiphers
54
55
 
55
56
  def next(plaintext_char)
56
57
  plaintext_byte = plaintext_char.bytes.reduce(0){|a,e| a ^ e}
57
- @random = Random.new(@random.rand(SEEDING_RAND_MAX) ^ plaintext_byte)
58
+ @random = Random.new(@random.rand(SEEDING_RAND_MAX) ^ @key_stream.next ^ plaintext_byte)
58
59
  @random.rand(@max)
59
60
  end
60
61
  end
@@ -2,9 +2,10 @@ module ShiftCiphers
2
2
  module Version
3
3
  MAJOR = 1
4
4
  MINOR = 0
5
- PATCH = 0
5
+ PATCH = 1
6
6
  LABEL = nil
7
+ IS_STABLE = true
7
8
  end
8
9
 
9
- VERSION = ([Version::MAJOR, Version::MINOR, Version::PATCH, Version::LABEL].compact * '.').freeze
10
+ VERSION = ([Version::MAJOR, Version::MINOR, Version::PATCH, Version::LABEL, Version::IS_STABLE ? nil : "next"].compact * '.').freeze
10
11
  end
@@ -18,9 +18,9 @@ Gem::Specification.new do |s|
18
18
  s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(doc|test|spec|features|bin)/|Rakefile|Gemfile*|CHANGELOG}) || f.start_with?('.') }
19
19
  s.require_paths = ["lib"]
20
20
 
21
- s.required_ruby_version = ">= 2.1.0"
21
+ s.required_ruby_version = ">= 2.3.0"
22
22
 
23
- s.add_development_dependency "bundler", "~> 1.16"
24
- s.add_development_dependency "pry", "~> 0.11"
25
- s.add_development_dependency "rspec", "~> 3.8"
23
+ s.add_development_dependency "bundler", "~> 2.1"
24
+ s.add_development_dependency "pry", "~> 0.13"
25
+ s.add_development_dependency "rspec", "~> 3.9"
26
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shift_ciphers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomasz Więch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-17 00:00:00.000000000 Z
11
+ date: 2020-05-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.16'
19
+ version: '2.1'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.16'
26
+ version: '2.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pry
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.11'
33
+ version: '0.13'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.11'
40
+ version: '0.13'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.8'
47
+ version: '3.9'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.8'
54
+ version: '3.9'
55
55
  description: Implementation of Caesar and Vigenere ciphers
56
56
  email:
57
57
  - tewu.dev@gmail.com
@@ -81,15 +81,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
81
81
  requirements:
82
82
  - - ">="
83
83
  - !ruby/object:Gem::Version
84
- version: 2.1.0
84
+ version: 2.3.0
85
85
  required_rubygems_version: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  requirements: []
91
- rubyforge_project:
92
- rubygems_version: 2.7.7
91
+ rubygems_version: 3.1.2
93
92
  signing_key:
94
93
  specification_version: 4
95
94
  summary: Implementation of Caesar and Vigenere ciphers