Encryption CF 8解密函数返回值,返回值随<;预处理></预处理>;

Encryption CF 8解密函数返回值,返回值随<;预处理></预处理>;,encryption,coldfusion,Encryption,Coldfusion,我正在使用以下代码加密用户密码 <cfset "EncryptedNewPass" = Encrypt(#HTMLCodeFormat(NewPass)#, Request.PasswordKey)> 然后将其与存储在数据库中的值进行比较,结果显示效果良好。但是,如果我从数据库中获取值并使用decrypt,如下所示 <cfset DecryptedPass = Decrypt(#getOrigPassFP.pass#, Request.PasswordKey)>

我正在使用以下代码加密用户密码

<cfset "EncryptedNewPass" = Encrypt(#HTMLCodeFormat(NewPass)#, Request.PasswordKey)>

然后将其与存储在数据库中的值进行比较,结果显示效果良好。但是,如果我从数据库中获取值并使用decrypt,如下所示

<cfset DecryptedPass = Decrypt(#getOrigPassFP.pass#, Request.PasswordKey)>

然后执行cfout,值用
标记包装。我遇到的问题是,因为我们也使用密码打开PDF文档,所以它会抛出一个错误。我尝试使用replace剥离标记,但当它显示或传递给变量时,它仍然包含
标记。

您自己将
标记放在那里!!你认为他做什么

您正在自己将
标记放在那里!!你认为他做什么

从评论中:我理解你的意思,但我的问题是,一旦预标记被解密,如何在重新加密之前删除它

<cfset NewPass = "this_is_the_password">
<cfset PasswordKey = "this_is_the_really_weak_key">
<cfset EncryptedNewPass = Encrypt(HTMLCodeFormat(NewPass), PasswordKey)>
<cfset DecryptedPass = Decrypt(EncryptedNewPass, PasswordKey)>
<cfoutput>
<p>NewPass = #NewPass#</p>
<p>PasswordKey = #PasswordKey#</p>
<p>EncryptedNewPass = #EncryptedNewPass#</p>
<p>DecryptedPass = #HTMLEditFormat(DecryptedPass)#</p>
<cfif Left(DecryptedPass,5) EQ "<PRE>">
    <cfset DecryptedPass = Right(DecryptedPass,(Len(DecryptedPass)-5))>
    <p>Found and removed &lt;PRE&gt; tag = #HTMLEditFormat(DecryptedPass)#</p>
</cfif>
<cfif Right(DecryptedPass,6) EQ "</PRE>">
    <cfset DecryptedPass = Left(DecryptedPass,(Len(DecryptedPass)-6))>
    <p>Found and removed &lt;/PRE&gt; tag = #HTMLEditFormat(DecryptedPass)#</p>
</cfif>
</cfoutput>
<cfif Left(DecryptedPass,5) EQ "<PRE>">
    <cfset DecryptedPass = Right(DecryptedPass,(Len(DecryptedPass)-5))>
    <p>Found and removed &lt;PRE&gt; tag = #HTMLEditFormat(DecryptedPass)#</p>
</cfif>
下面的代码是如何从注释中删除
的一个示例:我理解您的意思,但我的问题是如何在预标记解密后删除它,然后再重新加密


下面的代码是如何删除EncryptedNewPass周围不需要“”的
的一个示例。根据邓肯的评论,您不需要在您的陈述中使用##,我建议您阅读以下内容:警告-在使用
Encrypt()
函数时,如果未指定要使用的算法,则默认为
CFMX\u COMPAT
。来自Adobe自己的文档“此算法是最不安全的选项(默认)”。是的,不要对任何事情使用
CFMX\u COMPAT
。这几乎就像根本没有加密一样。绝对不要使用CFMX\u COMPAT。或者MD5。照亚当说的去做,把它们弄碎。然后给它们加盐。安全地存储密码可能是一个相当大的话题,但是有很多关于如何做到这一点的信息。SHA-256很好。使用您需要的最高算法。算法越大,越难破解。但合法计算所需的时间越长。有一些关于哈希和salt密码的好信息。您不需要加密新密码周围的“”。根据邓肯的评论,您不需要在您的陈述中使用##,我建议您阅读以下内容:警告-在使用
Encrypt()
函数时,如果未指定要使用的算法,则默认为
CFMX\u COMPAT
。来自Adobe自己的文档“此算法是最不安全的选项(默认)”。是的,不要对任何事情使用
CFMX\u COMPAT
。这几乎就像根本没有加密一样。绝对不要使用CFMX\u COMPAT。或者MD5。照亚当说的去做,把它们弄碎。然后给它们加盐。安全地存储密码可能是一个相当大的话题,但是有很多关于如何做到这一点的信息。SHA-256很好。使用您需要的最高算法。算法越大,越难破解。但合法计算所需的时间越长。有一些关于散列和盐析密码的好信息。有没有办法删除标签或将其转换为纯文本以允许我使用密码?请帮忙。你看过我链接到的htmlCodeFormat()的文档了吗?您可以使用该函数专门添加PRE标记。这就是函数的作用。如果你不想这样做:不要用它!我确实读了链接。接下来,我将删除格式,但如何删除带有pre标记的现有格式。正如Leigh所建议的,我可以解密现有的标签,然后删除pre标签,然后再加密回来。但是我不知道如何删除pre标签。非常感谢您的帮助。有没有办法删除标签或将其转换为纯文本以允许我使用密码?请帮忙。你看过我链接到的htmlCodeFormat()的文档了吗?您可以使用该函数专门添加PRE标记。这就是函数的作用。如果你不想这样做:不要用它!我确实读了链接。接下来,我将删除格式,但如何删除带有pre标记的现有格式。正如Leigh所建议的,我可以解密现有的标签,然后删除pre标签,然后再加密回来。但是我不知道如何删除pre标签。非常感谢您的帮助。在加密或解密您的值时不要使用这些函数。是的,通常您希望避免以任何方式对加密/预加密的值进行蒙混过关,因为即使只有一个空格也会产生很大的差异。在加密或解密值时不要使用这些函数。是的,通常您希望避免以任何方式对加密/预加密的值进行蒙混过关,因为即使是一个空格也会产生很大的差异。
<cfif Right(DecryptedPass,6) EQ "</PRE>">
    <cfset DecryptedPass = Left(DecryptedPass,(Len(DecryptedPass)-6))>
    <p>Found and removed &lt;/PRE&gt; tag = #HTMLEditFormat(DecryptedPass)#</p>
</cfif>
Text character    Encoding
    <               &lt;
    >               &gt;
    &               &amp;
    "               &quot;