caesar 0.3
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.
- data/README.textile +21 -0
- data/lib/caesar.rb +51 -0
- metadata +55 -0
data/README.textile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
h1. Caesar Cipher
|
2
|
+
|
3
|
+
encode/decode any string using the Caesar Cipher method.
|
4
|
+
|
5
|
+
h3. Instalation
|
6
|
+
|
7
|
+
pre. gem install caesar
|
8
|
+
|
9
|
+
h3. Usage
|
10
|
+
|
11
|
+
bc.. require 'caesar'
|
12
|
+
|
13
|
+
Caesar.encode('A', 'CAESAR') #=> "CAESAR"
|
14
|
+
Caesar.encode('R', 'CAESAR') #=> "TRVJRI"
|
15
|
+
|
16
|
+
Caesar.decode('A', 'CAESAR') #=> "CAESAR"
|
17
|
+
Caesar.decode('R', 'TRVJRI') #=> "CAESAR"
|
18
|
+
|
19
|
+
h3. Authors
|
20
|
+
|
21
|
+
Roberto Decurnex ("nex.development@gmail.com":malto:nex.development@gmail.com)
|
data/lib/caesar.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
# Caesar Cipher
|
2
|
+
#
|
3
|
+
# encode/decode any string using the Caesar Cipher method.
|
4
|
+
#
|
5
|
+
# Usage:
|
6
|
+
# Caesar.encode('A', 'CAESAR') #=> "CAESAR"
|
7
|
+
# Caesar.encode('R', 'CAESAR') #=> "TRVJRI"
|
8
|
+
#
|
9
|
+
# Caesar.decode('A', 'CAESAR') #=> "CAESAR"
|
10
|
+
# Caesar.decode('R', 'TRVJRI') #=> "CAESAR"
|
11
|
+
#
|
12
|
+
|
13
|
+
module Caesar
|
14
|
+
A_OFFSET = 65 #'A'.unpack('C').first
|
15
|
+
Z_OFFSET = 90 #'Z'.unpack('C').first
|
16
|
+
|
17
|
+
def Caesar.encode(key, plain_text)
|
18
|
+
key_offset = key.upcase.unpack('C').first
|
19
|
+
|
20
|
+
cipher_text = plain_text.upcase.split('').collect do |letter|
|
21
|
+
cipher_letter = (letter.unpack('C').first + key_offset - A_OFFSET)
|
22
|
+
if cipher_letter > Z_OFFSET
|
23
|
+
cipher_letter -= ( Z_OFFSET - A_OFFSET + 1 )
|
24
|
+
end
|
25
|
+
cipher_letter.chr
|
26
|
+
end
|
27
|
+
|
28
|
+
return cipher_text.join
|
29
|
+
end
|
30
|
+
|
31
|
+
def Caesar.decode(key, cipher_text)
|
32
|
+
key_offset = key.upcase.unpack('C').first
|
33
|
+
|
34
|
+
plain_text = cipher_text.split('').collect do |cipher_letter|
|
35
|
+
if !('A'..'Z').include?(cipher_letter)
|
36
|
+
cipher_letter
|
37
|
+
else
|
38
|
+
if cipher_letter.unpack('C').first >= key_offset
|
39
|
+
letter = cipher_letter.unpack('C').first - key_offset
|
40
|
+
else
|
41
|
+
letter = (cipher_letter.unpack('C').first + (Z_OFFSET - A_OFFSET + 1)) - key_offset
|
42
|
+
end
|
43
|
+
letter += A_OFFSET
|
44
|
+
letter.chr
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
return plain_text.join
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
metadata
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: caesar
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: "0.3"
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Roberto Decurnex
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2011-07-18 00:00:00 Z
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: A simple Caesar Cipher ruby implementation
|
17
|
+
email: nex.development@gmail.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
|
+
files:
|
25
|
+
- README.textile
|
26
|
+
- lib/caesar.rb
|
27
|
+
homepage: http://robertodecurnex.github.com/caesar
|
28
|
+
licenses: []
|
29
|
+
|
30
|
+
post_install_message:
|
31
|
+
rdoc_options: []
|
32
|
+
|
33
|
+
require_paths:
|
34
|
+
- lib
|
35
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
36
|
+
none: false
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: "0"
|
41
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: "0"
|
47
|
+
requirements: []
|
48
|
+
|
49
|
+
rubyforge_project:
|
50
|
+
rubygems_version: 1.8.5
|
51
|
+
signing_key:
|
52
|
+
specification_version: 3
|
53
|
+
summary: caesar-0.1
|
54
|
+
test_files: []
|
55
|
+
|