2011-03-30 114 views
38

我前一段时间看到了在不包含任何库的情况下对rails中的字符串进行解密和加密的可能性,但是我找不到任何博客文章。加密,使用Rails解密

我希望能够加密和解密字符串,而不包括任何东西。 使用相同的密钥可用于导轨中的其他所有内容,例如签名的Cookie。

任何想法?

回答

106

您的意思是这个吗?:ActiveSupport::MessageEncryptor。这里是重复使用Rails的方式应用4的秘密:

crypt = ActiveSupport::MessageEncryptor.new(Rails.application.secrets.secret_key_base) 
encrypted_data = crypt.encrypt_and_sign('my confidental data') 

和加密的数据可以被解密:

decrypted_back = crypt.decrypt_and_verify(encrypted_data) 

此前Rails 3中使用secret_token配置选项和加密方法是encryptdecrypt

+6

这是漂亮的皮条客。 – Kristian 2013-05-03 22:44:44

+4

一个伟大的解决方案,我在找什么,谢谢!刚刚起来,ActiveSupport :: MessageEncryptor接口已经改变,因为Rails 4.0和这个例子已经过时了。您应该调用encrypt_and_sign而不是加密和decrypt_and_verify,而不是解密。 – 2014-03-20 08:27:47

+0

谢谢乔治,我更新了答案并做出了新的例子。 – gertas 2014-03-20 12:06:32