KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
This question is a continuation of my last one, regarding How to make Ruby AES-256-CBC and PHP MCRYPT_RIJNDAEL_128 play well together . I've got that working now, but I'm still struggling to go the other direction. The PHP generated cryptogram appears to have all the information that was provided, but I cannot get the Ruby code to decrypt it without error. Here's the PHP code I'm using to generate the cryptogram: $cleartext = "Who's the clever boy?"; $key = base64_decode("6sEwMG/aKdBk5Fa2rR6vVw==\n"); $iv = base64_decode("vCkaypm5tPmtP3TF7aWrug=="); $cryptogram = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $cleartext, MCRYPT_MODE_CBC, $iv); $result = base64_encode($cryptogram); print "\n'$result'\n"; RESULT 'JM0OxMINPTnF1vwXdI3XdKI0KlVx210CvpJllFja+GM=' Then here's the attempt to decrypt in Ruby: >> cipher = OpenSSL::Cipher::Cipher.new('aes-128-cbc') >> cipher.key = Base64.decode64("6sEwMG/aKdBk5Fa2rR6vVw==\n") >> cipher.iv = Base64.decode64("vCkaypm5tPmtP3TF7aWrug==") >> cryptogram = Base64.decode64('JM0OxMINPTnF1vwXdI3XdKI0KlVx210CvpJllFja+GM=') >> cleartext = cipher.update(cryptogram) => "Who's the clever" >> cleartext << cipher.final OpenSSL::Cipher::CipherError: bad decrypt from (irb):100:in `final' from (irb):100 What's really frustrating about this is that it's possible to get the entire cleartext out of that encrypted string. Repeating the above, but adding a nonsense pad to the cryptogram: >> cleartext = cipher.update(cryptogram + 'pad') => "Who's the clever boy?\000\000\000\000\000\000\000\000\000\000\000" >> cleartext << cipher.final OpenSSL::Cipher::CipherError: bad decrypt from (irb):119:in `final' from (irb):119 In my actual use c
Tags (comma-separated)
Save Edits
Cancel