使用<pre> </pre>附带的CF 8 Decrypt函数返回值

时间:2013-09-17 15:49:30

标签: encryption coldfusion

我使用以下代码加密用户密码。

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

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

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

并执行cfout,该值包含<pre> </pre>标记。我遇到的问题是因为我们也使用密码打开PDF文档,这是一个错误。我尝试使用replace来剥离标记但是当它显示或传递给变量时,它仍然包含<pre>标记。

2 个答案:

答案 0 :(得分:9)

自己将<pre>标记放在那里!!您认为HTMLCodeFormat()的作用是什么?!

答案 1 :(得分: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;