1

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

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

然后将其与存储在数据库中的值进行比较,它工作正常。但是,如果我从数据库中获取值并使用解密如下

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

并执行cfout,该值用<pre> </pre>标签包装。我遇到的问题是因为我们还使用密码打开 PDF 文档,所以它会引发错误。我尝试使用替换来剥离标签,但是当它显示或传递给变量时,它仍然包含<pre>标签。

4

2 回答 2

9

你自己标签放在<pre>那里!!你觉得有什么HTMLCodeFormat()作用??!

于 2013-09-17T17:05:00.077 回答
2

从评论中:我明白你在说什么,但我的问题是如何在解密前删除预标签,然后再加密它?

以下代码是如何从解密值中删除<PRE>和标记的一个示例。</PRE>(我正在输出所有值,以便您在执行此代码时可以跟随。)

<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>

查看该代码,此块将从<PRE>字符串的开头删除:

<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>

这个块将从</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>

我只是用来HTMLEditFormat()输出值供您在浏览器中查看。在加密或解密您的值时不要使用这些函数。

您还需要注意,该HTMLCodeFormat()函数不仅仅将给定的字符串包装在<PRE>标签中。该函数还将字符:<>&和更改为"等效的 HTML 字符实体。如果您的任何用户在他们的密码中使用了这些字符,那么您对它们的解密将失败(将不等于他们的实际密码)。

此函数将以下字符转换为 HTML 字符实体:

Text character    Encoding
    <               &lt;
    >               &gt;
    &               &amp;
    "               &quot;
于 2013-09-19T17:28:03.093 回答