Hi, basically I receive a string generated by a user, then "encode" it using some secret string I own and pass the result to other user, and when I receive such a resulting string I must be able to decode it using my secret string (but no other should be able to decode the resulting string without knowing my secret key. This is: original_string = "test" secret_key = "ABCD" modified_string = HASH_FUNCTION(original_string, secret_key) original_string = UNHASH_FUNCTION(modified_string, secret_key) Any suggestion for the above HASH_FUNCTION and UNHASH_FUNCTION? I would like it to be something really efficient. Thanks a lot.
on 2012-12-20 10:08
on 2012-12-20 10:38
The nature of a hash function is that there is no unhash function. It would be pretty useless if there was. What you want is encryption like RSA, Blowfish or rot13. PS the rot13 thing was a joke.
on 2012-12-20 10:52
2012/12/20 Iñaki Baz Castillo <ibc@aliax.net>: > > modified_string = HASH_FUNCTION(original_string, secret_key) > > original_string = UNHASH_FUNCTION(modified_string, secret_key) > > > Any suggestion for the above HASH_FUNCTION and UNHASH_FUNCTION? I > would like it to be something really efficient. I've found the Crypt [*] library but it seems not adapted for Ruby 1.9. And I would prefer a C based Ruby extension. [*] http://crypt.rubyforge.org/
on 2012-12-20 10:56
2012/12/20 Peter Hickman <peterhickman386@googlemail.com>: > The nature of a hash function is that there is no unhash function. It would > be pretty useless if there was. Yes, sorry, bad word. I just meant "encode/decode" rather than "hash". > What you want is encryption like RSA, Blowfish or rot13. > > PS the rot13 thing was a joke. Ok, thanks a lot.
on 2012-12-20 11:14
Hi, 2012/12/20 Iñaki Baz Castillo <ibc@aliax.net>: > > modified_string = HASH_FUNCTION(original_string, secret_key) > > original_string = UNHASH_FUNCTION(modified_string, secret_key) > > > Any suggestion for the above HASH_FUNCTION and UNHASH_FUNCTION? I > would like it to be something really efficient. > > Thanks a lot. > You can use openssl module something like this: def encrypt(input,key) require 'openssl' des = OpenSSL::Cipher::Cipher.new("des-ede-cbc") des.encrypt des.key= "%16s" % key des.update(input)+des.final end def decrypt(input,key) require 'openssl' des = OpenSSL::Cipher::Cipher.new("des-ede-cbc") des.decrypt des.key = "%16s" % key des.update(input)+des.final end But, I am not sure it is really efficient. Regards, Park Heesob
on 2012-12-20 12:40
Thanks, I'm trying it and will compare with crypt19 as suggested by Joel. Thanks to both. 2012/12/20 Heesob Park <phasis@gmail.com>:
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.