Skip to content

dubek/salsa20-ruby

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

salsa20

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.

How to install

gem install salsa20

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

Usage

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.

References

License

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

Contact

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