ColdFusion 加密 URL : 解密 Return URL
ColdFusion Encrypt a URL : Decrypt Return URL
我正在寻找加密验证电子邮件。
所以一个用户注册了:然后发送给“bob@bobemail.com”
我想加密 return link。我们会说它创建了这个“HKDLEK6798JKJK”
因此它向 BOB 发送电子邮件:可点击 link 的“http://website.com?urlem=HKDLEK6798JKJK”
当他点击 return link。我想将它解密回“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”(我知道的更多)
当 link 返回时,我正在尝试:(返回 URL 或设置相同)
<cfset urlem = "HKDLEK6798JKJK">
<cfoutput>#urlem#</cfoutput>
<br><br>
<cfset urld = decrypt(urlem, key, "AES/CBC/PKCS5Padding", "HEX") />
<cfoutput>[#urld#]</cfoutput>
URLD 要么是空白,要么出现错误:错误:尝试加密或解密输入字符串时出错:给定的最终块未正确填充。
AES 是一种对称密钥算法,因此您只需创建一次密钥,然后将其作为秘密存储在您的配置中(例如在 APPLICATION
范围)。如果密钥更改,您将无法再解密任何以前加密的数据。
第 1 步
使用 <cfoutput>#generateSecretKey("AES")#</cfoutput>
创建 AES 密钥。无需在您的代码库中的任何位置添加此行,因为您可能永远不会更改此密钥(至少对于此 Web 应用程序而言)。
生成的密钥是16字节(128位)的随机组合,编码为Base64字符串。 ColdFusion 通常从不期望字节数组,因此您可以使用 encrypt
和 decrypt
的编码值。它可能看起来像这样: k1+pzMg/rqmbVGfI5MOf8Q==
注意到 +
和 /
了吗?这些是 Base64 的一部分,无需担心,但我总是建议您滚动直到获得“漂亮”的字符串以进行复制和粘贴,例如: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")>
这将return加密数据(字节数组)并将其表示为HEX编码的字符串,例如:A0E2D61277EE1966CDD571B25A8B088E81AF7953B52BBE086C5079A8565D3D718DC572474A0C7DEF5BFC2F8F90CC464B
请注意,由于块链接(CBC 模式),此值将随每次调用而变化。不过不用担心,所有这些都可以用同样的方式解密。 (如果你只指定算法参数AES
,它使用ECB模式,总是return得到相同的结果,这被认为不太安全。)
第 4 步
使用存储的密钥解密加密的电子邮件:
<cfset decryptedMail = decrypt("A0E2D61277EE1966CDD571B25A8B088E81AF7953B52BBE086C5079A8565D3D718DC572474A0C7DEF5BFC2F8F90CC464B", APPLICATION.AesKeyForMails, "AES/CBC/PKCS5Padding", "HEX")>
我们开始了:bob@bobemail.com
我正在寻找加密验证电子邮件。
所以一个用户注册了:然后发送给“bob@bobemail.com”
我想加密 return link。我们会说它创建了这个“HKDLEK6798JKJK”
因此它向 BOB 发送电子邮件:可点击 link 的“http://website.com?urlem=HKDLEK6798JKJK”
当他点击 return link。我想将它解密回“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”(我知道的更多)
当 link 返回时,我正在尝试:(返回 URL 或设置相同)
<cfset urlem = "HKDLEK6798JKJK">
<cfoutput>#urlem#</cfoutput>
<br><br>
<cfset urld = decrypt(urlem, key, "AES/CBC/PKCS5Padding", "HEX") />
<cfoutput>[#urld#]</cfoutput>
URLD 要么是空白,要么出现错误:错误:尝试加密或解密输入字符串时出错:给定的最终块未正确填充。
AES 是一种对称密钥算法,因此您只需创建一次密钥,然后将其作为秘密存储在您的配置中(例如在 APPLICATION
范围)。如果密钥更改,您将无法再解密任何以前加密的数据。
第 1 步
使用 <cfoutput>#generateSecretKey("AES")#</cfoutput>
创建 AES 密钥。无需在您的代码库中的任何位置添加此行,因为您可能永远不会更改此密钥(至少对于此 Web 应用程序而言)。
生成的密钥是16字节(128位)的随机组合,编码为Base64字符串。 ColdFusion 通常从不期望字节数组,因此您可以使用 encrypt
和 decrypt
的编码值。它可能看起来像这样: k1+pzMg/rqmbVGfI5MOf8Q==
注意到 +
和 /
了吗?这些是 Base64 的一部分,无需担心,但我总是建议您滚动直到获得“漂亮”的字符串以进行复制和粘贴,例如: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")>
这将return加密数据(字节数组)并将其表示为HEX编码的字符串,例如:A0E2D61277EE1966CDD571B25A8B088E81AF7953B52BBE086C5079A8565D3D718DC572474A0C7DEF5BFC2F8F90CC464B
请注意,由于块链接(CBC 模式),此值将随每次调用而变化。不过不用担心,所有这些都可以用同样的方式解密。 (如果你只指定算法参数AES
,它使用ECB模式,总是return得到相同的结果,这被认为不太安全。)
第 4 步
使用存储的密钥解密加密的电子邮件:
<cfset decryptedMail = decrypt("A0E2D61277EE1966CDD571B25A8B088E81AF7953B52BBE086C5079A8565D3D718DC572474A0C7DEF5BFC2F8F90CC464B", APPLICATION.AesKeyForMails, "AES/CBC/PKCS5Padding", "HEX")>
我们开始了:bob@bobemail.com