因此,似乎CF10在生成的加密字符串之间不断添加和实际空间,所以当字符串传递给dercrypt函数时,由于生成的字符串中的空格而失败
字符串示例: KjdTNz4 / K05fTjs Qk8gICAK
<!--- Decrypt username --->
<cfset TheKey = '#Session.TheKey#'>
<cfset userencrypt = "#arguments.username#">
<cfset username = Decrypt(ToString(ToBinary(userencrypt)), TheKey)>
答案 0 :(得分:2)
从this example on trycf.com可以看出,加密不会增加额外的空格。代码中的其他东西导致了这一点。没有看到实际代码,我们就无法更具体。
那就是说,ToString(ToBinary(...))
没有必要。而是使用Decrypt函数"encoding" attribute来指示如何解码加密字符串。
此外,看起来代码正在使用遗留的“CFMX_COMPAT”,这是非常不安全的。 本质上是一种糟糕的混淆算法,强烈建议不要。对于真正的加密,请使用标准算法之一,如AES,BLOWFISH等。
<!--- demo only: generate new key --->
<cfset theKey = generateSecretKey("AES")>
<cfset plainText = "blah, blah, blah">
<cfset userEncrypt= encrypt(plainText, theKey , "AES", "base64")>
<cfset userName = Decrypt(userEncrypt, theKey , "AES", "base64")>