Skip to content

dubek/salsa20-ruby

Repository files navigation

Ruby-wrapper for the Salsa20 stream cipher algorithm designed by Daniel Bernstein. Salsa20 is a family of 256-bit stream ciphers designed in 2005 and submitted to eSTREAM, the ECRYPT Stream Cipher Project.

gem install salsa20

You’ll need a working compiler – the crypto code is the original C implementation from Daniel Bernstein.

require 'salsa20'

key = "VERY_SECRET_256_BIT_KEY_12345678"
iv = "-RANDOM-"
plain_text = "Salsa20 is a family of 256-bit stream ciphers"

encryptor = Salsa20.new(key, iv)
encrypted_text = encryptor.encrypt(plain_text)
p encrypted_text
# => "\x9D\x1C\xE4\x83\xAB\x8E\xB7\x85a,\xC3\xF6\x981*\x03\b-\x99\xAD\xDF\xBFS\x96\x94$\xA0\xF0U\v\xABz;=R\xBB\xE1\xB0\xDD\xBC\x1A9\xB8\xBEb"

decryptor = Salsa20.new(key, iv)
decrypted_text = decryptor.decrypt(encrypted_text)
p decrypted_text
# => "Salsa20 is a family of 256-bit stream ciphers"

The Salsa20 cipher algorhitm supports efficiently seeking to any 64-bytes boundry position in the stream using the seek method. Use position to tell the current stream position in bytes.

For more information, see the detailed rdoc of the Salsa20 class.

MIT open source license (full license text in the LICENSE file).

Author

Dov Murik (dov.murik@gmail.com)

Project homepage

github.com/dubek/salsa20-ruby

About

Ruby bindings for the Salsa20 stream cipher algorithm

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •