public
Description: A Ruby implementation of the Data Encryption Standard
Homepage: http://www.robertsosinski.com
Clone URL: git://github.com/robertsosinski/ruby-des.git
ruby-des / README
100644 51 lines (30 sloc) 1.636 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
== RubyDES
 
RubyDES is a full Ruby implementation of the Data Encryption Standard. The purpose of this
project was to allow Ruby programmers interested in cryptography a glimpse of how a robust
cryptographic algorithm functions in a language they understand.
 
The best way to understand the RubyDES source code is by following along with a FIPS 46,
which you can find at http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf
 
NOTE: DES is deprecated, and as such, you should not use this implementation in any project you
are developing. I highly recommend the AES, TwoFish or Serpent algorithms through the OpenSSL
library instead.
 
== Running RubyDES
 
Using RubyDES is pretty easy. First, construct a new data and key block.
 
  data = RubyDES::Block.new('mysecret')
  key = RubyDES::Block.new('hushhush')
 
Then, build a new <tt>RubyDES::Ctx</tt> object and supply the data and key block.
 
  des = RubyDES::Ctx.new(data, key)
 
Finally, let it rip.
 
  encrypted_data = des.encrypt
 
You will then be returned a DES encrypted block that is completely secure against eavesdropping
(if it were still 1997).
 
To decrypt an encrypted data block, just build a new <tt>RubyDES::Ctx</tt> object in similar
fashion as before.
 
  un_des = RubyDES::Ctx.new(encrypted_data, key)
 
And run the DES with the key schedule reversed.
 
  decrypted_data = un_des.decrypt
 
You can then check to see if it all worked.
 
  data.bit_array.eql?(decrypted_data.bit_array)
 
Enjoy!
 
== Feedback
 
If you have any questions, comments or just want to talk shop about crypto, feel free to reach me
through my website at http://www.robertsosinski.com.