微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ColdFusion 加密 URL:解密返回 URL

如何解决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 通常从不需要字节数组,因此您可以使用 encryptdecrypt 的编码值。它可能看起来像这样: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 举报,一经查实,本站将立刻删除。