在ColdFusion中,如何将发布的密码与我表中的SHA256加密密码相匹配?

deu*_*on0 2 coldfusion sha256

我正在使用ColdFusion创建一个登录表单,但我无法弄清楚在我的表中检查使用SHA256加密的密码的语法.我研究了这个,到目前为止只找到了复杂的答案,大多与我需要的无关.

这是我的查询代码:

   <cfquery name="qVerify" datasource="MyDSN">
SELECT  *
   FROM cryptuser
   WHERE firstname = '#firstname#'
   AND   password = '#password#'
</cfquery>
Run Code Online (Sandbox Code Playgroud)

因此,通过表格输入和发布的密码需要与我表格中加密的密码相匹配,是否有人知道这是否可行?

非常感谢.

Dav*_*ber 5

要使用SHA-256进行加密,请不要使用encrypt()函数,而是使用hash()函数(SHA是单向散列):

<cfset EncryptedPassword = Hash(form.password, "SHA-256") />
Run Code Online (Sandbox Code Playgroud)

我相信CF将返回一个全大写的哈希,所以请确保你比较数据库中加密的密码的大写:

AND UPPER(password) = <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#EncryptedPassword#" />
Run Code Online (Sandbox Code Playgroud)

还要注意编码!数据库中的数据可能具有与默认值不同的编码(例如,iso-8859-1而不是utf-8).

希望这可以帮助.