vigenere 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.
Files changed (3) hide show
  1. data/README.textile +21 -0
  2. data/lib/vigenere.rb +50 -0
  3. metadata +81 -0
@@ -0,0 +1,21 @@
1
+ h1. Vigenère Cipher
2
+
3
+ encode/decode any string using the Vigenère Cipher method.
4
+
5
+ h3. Instalation
6
+
7
+ pre. gem install vigenere
8
+
9
+ h3. Usage
10
+
11
+ bc.. require 'vigenere'
12
+
13
+ Vigenere.encode('AAA', 'CAESAR') #=> "CAESAR"
14
+ Vigenere.encode('BIO', 'CAESAR') #=> "DISTIF"
15
+
16
+ Vigenere.decode('AAA', 'CAESAR') #=> "CAESAR"
17
+ Vigenere.decode('BIO', 'DISTIF') #=> "CAESAR"
18
+
19
+ h3. Authors
20
+
21
+ Roberto Decurnex ("nex.development@gmail.com":malto:nex.development@gmail.com)
@@ -0,0 +1,50 @@
1
+ require 'caesar'
2
+
3
+ # Vigenère Cipher
4
+ #
5
+ # encode/decode any string using the Vigenère Cipher method.
6
+ #
7
+ # Usage:
8
+ # Vigenere.encode('AAA', 'CAESAR') #=> "CAESAR"
9
+ # Vigenere.encode('BIO', 'CAESAR') #=> "DISTIF"
10
+ #
11
+ # Vigenere.decode('AAA', 'CAESAR') #=> "CAESAR"
12
+ # Vigenere.decode('BIO', 'DISTIF') #=> "CAESAR"
13
+ #
14
+
15
+ module Vigenere
16
+
17
+ def Vigenere.encode(key, plain_text)
18
+ key = key.upcase.split('')
19
+
20
+ cipher_text = plain_text.upcase.split('').collect do |letter|
21
+ if !('A'..'Z').include?(letter)
22
+ cipher_letter = letter
23
+ else
24
+ cipher_letter = Caesar.encode(key.first, letter)
25
+ key << key.shift
26
+ end
27
+ cipher_letter
28
+ end
29
+
30
+ return cipher_text.join
31
+ end
32
+
33
+ def Vigenere.decode(key, cipher_text)
34
+ key = key.upcase.split('')
35
+
36
+ plain_text = cipher_text.split('').collect do |cipher_letter|
37
+ if !('A'..'Z').include?(cipher_letter)
38
+ letter = cipher_letter
39
+ else
40
+ letter = Caesar.decode(key.first, cipher_letter)
41
+ key << key.shift
42
+ end
43
+ letter
44
+ end
45
+
46
+ return plain_text.join
47
+ end
48
+
49
+ end
50
+
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vigenere
3
+ version: !ruby/object:Gem::Version
4
+ hash: 9
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ version: "0.1"
10
+ platform: ruby
11
+ authors:
12
+ - Roberto Decurnex
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-07-18 00:00:00 -03:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: caesar
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 13
29
+ segments:
30
+ - 0
31
+ - 3
32
+ version: "0.3"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ description: "A simple Vigen\xC3\xA8re Cipher ruby implementation"
36
+ email: nex.development@gmail.com
37
+ executables: []
38
+
39
+ extensions: []
40
+
41
+ extra_rdoc_files: []
42
+
43
+ files:
44
+ - README.textile
45
+ - lib/vigenere.rb
46
+ has_rdoc: true
47
+ homepage: http://robertodecurnex.github.com/vigenere
48
+ licenses: []
49
+
50
+ post_install_message:
51
+ rdoc_options: []
52
+
53
+ require_paths:
54
+ - lib
55
+ required_ruby_version: !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ hash: 3
61
+ segments:
62
+ - 0
63
+ version: "0"
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ hash: 3
70
+ segments:
71
+ - 0
72
+ version: "0"
73
+ requirements: []
74
+
75
+ rubyforge_project:
76
+ rubygems_version: 1.3.7
77
+ signing_key:
78
+ specification_version: 3
79
+ summary: vigenere-0.1
80
+ test_files: []
81
+