2014-07-15 97 views
0

继承的ruby代码库,它使用attr_encrypted gem来加密属性。Rails OpenSSL加密/解密?

我想解密值并加密它们。简单的任务!

解密工作。

再次加密返回不起作用?

这里的代码解密:

Encryptor.decrypt(Base64.decode64("mbgtmCefo8NZOWrSmrq0frYpMR8nRFRz83CkX7VqxAs="), :key=>'95f94bbd12fb60c156aea0c5fead8498b10cff780624b064a98d9aefa74e6a43b2cf7bfb4d0ab5fa44541b5e5385ccf0ef0e1bb563a6ea618f14c2770b583ba') 
=> "4763671098237511" 

这里的代码进行加密:

Encryptor.encrypt(Base64.encode64("4763671098237511"), :key=>'95f94bbd12fb60c156aea0c5fead8498b10cff780624b064a98d9aefa74e6a43b2cf7bfb4d0ab5fa44541b5e5385ccf0ef0e1bb563a6ea618f14c2770b583ba') 
=> "\xC7\xB4\xEB\xE8d\x11l\xB2\xC3\xCDd8\x1E\x88\xDD\xF3\x93\x96H6*\xD2!\f\x9C%F\x14\xE7\xC7\xF3\x1F" 

代码我期待:

"mbgtmCefo8NZOWrSmrq0frYpMR8nRFRz83CkX7VqxAs=" 

有人能澄清这个问题?

非常感谢!

回答

0

你应该明文加密创建密文,然后解密密文这样你就可以再次获得明文。解密明文会给你随机的垃圾,因为它期望输入是由加密方法创建的。例如,加密也应该存储一个IV并填充明文。

所以首先加密,然后解密,而不是周围的其他方式。解密和加密对于某些密码模式有效,但对于使用CBC操作模式的更高级别的函数肯定不起作用。