gpt4 book ai didi

encryption - "Could not perform unpadding: invalid pad byte.."的解密错误

转载 作者:行者123 更新时间:2023-12-01 01:33:16 24 4
gpt4 key购买 nike

使用 CF8 和 MySQL 5.1,我试图在创建时加密()密码,然后在登录时解密()。我可以让decrypt() 在测试页面上正常工作,但是当我将它放入带有cflogin 的cfincluded 页面时,我收到错误“尝试加密或解密您的输入字符串时发生错误:com.rsa.jsafe.crypto .dr: 无法执行取消填充:无效的填充字节.."。从我的测试页面到我的应用程序,它是相同的代码和数据库。

应用程序.cfc:

<cfif NOT IsDefined("Request.PasswordKey")>
<cfset request.PasswordKey = generateSecretKey("AES")>
<cfset request.algorithm = "AES">
<cfset request.encoding = "hex">
</cfif>

工作正常的测试页面:
FORM DATA:  <br/>
form password:<cfoutput>#form.passwd#</cfoutput><br/>
<cfset encrypted = Encrypt(form.passwd,Request.PasswordKey,Request.algorithm,Request.encoding)>
Encrypted: <cfoutput>#encrypted#</cfoutput><br/>
Decrypted: <cfoutput>#Decrypt(variables.encrypted,Request.PasswordKey,Request.algorithm,Request.encoding)#</cfoutput><br/>
<br/>
QUERY DATA<br/>
<cfinvoke component="components.userQ" method="login" returnvariable="qLogin">
<cfinvokeargument name="formData" value="#form#">
</cfinvoke>
<cfoutput>qLogin password: #qlogin.encPasswd#</cfoutput><br/>
<cfoutput>Decrypted encPasswd from qLogin: #Decrypt(qlogin.encPasswd,Request.PasswordKey,Request.algorithm,Request.encoding)#</cfoutput>

应用程序页面中的 Decrypt() 出错:
<cfset unEnPasswd = #Decrypt(qlogin.encPasswd,Request.PasswordKey,Request.algorithm,Request.encoding)#>

我可以使用相同的代码让默认的 CFMX_COMPAT encrypt() 和decrypt() 在我的应用程序中正常工作,只需更改 key 、算法和编码变量。
顺便说一句,我还将加密的字符串作为 varchar() 存储在数据库中,这样它就不会弄乱填充(所以我读了)。我试过 BLOB 但得到一个字节数组错误。

非常感谢任何帮助或想法。

最佳答案

您正在为每个请求创建一个新的 key ,

真的你的代码应该更像是:

<cffunction name="onApplicationStart" returnType="boolean" output="false">
<cfset application.PasswordKey = generateSecretKey("AES")>
</cffunction>

<cffunction name="onRequestStart" returnType="boolean" output="false">
<cfset request.PasswordKey = application.PasswordKey />
<cfset request.algorithm = "AES" />
<cfset request.encoding = "hex" />
</cffunction>

尽管您确实希望将密码 key 硬编码在配置文件中,否则如果您重新启动服务器,您将无法再次访问您的任何密码......

关于encryption - "Could not perform unpadding: invalid pad byte.."的解密错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3542635/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com