如何解决ColdFusion 加密 URL:解密返回 URL
我希望加密验证电子邮件。
所以用户注册:然后发送到“bob@bobemail.com”
我想加密返回链接。我们会说它创建了这个“HKDLEK6798JKJK”
所以它通过电子邮件发送给 BOB:“http://website.com?urlem=HKDLEK6798JKJK”的可点击链接
当他点击返回链接时。我想解密回“bob@bobemail.com”
<cfset key = generateSecretKey("AES") />
<!--- Set the ciphertext to a variable. This is the string you will store for later deciphering --->
<cfset cipherText = encrypt(em,key,"AES/CBC/PKCS5Padding","HEX") />
<cfoutput>#cipherText#</cfoutput>
创建了“HKDLEK6798JKJK”(我知道更多)
当链接返回时,我正在尝试:(返回 URL 或设置相同)
<cfset urlem = "HKDLEK6798JKJK">
<cfoutput>#urlem#</cfoutput>
<br><br>
<cfset urld = decrypt(urlem,"HEX") />
<cfoutput>[#urld#]</cfoutput>
URLD 要么为空,要么出现错误:错误:尝试加密或解密您的输入字符串时发生错误:未正确填充最终块。
解决方法
AES 是一种对称密钥算法,因此您只需创建一次密钥,然后将其作为机密存储在您的配置中(例如在 APPLICATION
范围内)。如果密钥发生变化,您将无法再解密任何先前加密的数据。
步骤 1
使用 <cfoutput>#generateSecretKey("AES")#</cfoutput>
创建 AES 密钥。无需在代码库中的任何位置放置此行,因为您可能永远不会更改此密钥(至少对于此网络应用程序不会)。
生成的密钥是 16 字节(128 位)的随机组合,编码为 Base64 字符串。 ColdFusion 通常从不需要字节数组,因此您可以使用 encrypt
和 decrypt
的编码值。它可能看起来像这样:k1+pzMg/rqmbVGfI5MOf8Q==
注意 +
和 /
?这些是 Base64 的一部分,没什么可担心的,但我总是建议你滚动,直到你得到一个“漂亮”的字符串,因为复制'n'粘贴的原因,比如:YncQUYZYdPez360xNmq2tw==
步骤 2
将生成的密钥作为其 Base64 编码值存储在您的 Web 应用程序配置中。如果您有 Application.cfc
,您可以将它写在 onApplicationStart
函数中。或者,如果您还有 Application.cfm
,请直接将其写在那里:
<cfset APPLICATION.AesKeyForMails = "YncQUYZYdPez360xNmq2tw==">
当然,你也可以只使用 <cfinclude>
一个带有变量的配置文件(然后不要使用 APPLICATION
)。什么最适合你。
步骤 3
使用存储的密钥加密电子邮件:
<cfset encryptedMail = encrypt("bob@bobemail.com",APPLICATION.AesKeyForMails,"AES/CBC/PKCS5Padding","HEX")>
这将返回加密数据(字节数组)并将其表示为十六进制编码字符串,例如:A0E2D61277EE1966CDD571B25A8B088E81AF7953B52BBE086C5079A8565D3D718DC572474A0C7DEF5BFC2F8F90CC464B
请注意,由于区块链(CBC 模式),此值会随着每次调用而改变。不过别担心,所有这些都可以用同样的方式解密。 (如果你只为算法参数指定AES
,它使用ECB模式,总是返回相同的结果,这被认为是不太安全的。)
步骤 4
使用存储的密钥解密加密的电子邮件:
<cfset decryptedMail = decrypt("A0E2D61277EE1966CDD571B25A8B088E81AF7953B52BBE086C5079A8565D3D718DC572474A0C7DEF5BFC2F8F90CC464B","HEX")>
然后我们开始:bob@bobemail.com
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。