vigenere 0.1

Sign up to get free protection for your applications and to get access to all the features.
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
+