从评论中:我明白你在说什么,但我的问题是如何在解密前删除预标签,然后再加密它?
以下代码是如何从解密值中删除<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 <PRE> tag = #HTMLEditFormat(DecryptedPass)#</p>
</cfif>
<cfif Right(DecryptedPass,6) EQ "</PRE>">
<cfset DecryptedPass = Left(DecryptedPass,(Len(DecryptedPass)-6))>
<p>Found and removed </PRE> tag = #HTMLEditFormat(DecryptedPass)#</p>
</cfif>
</cfoutput>
查看该代码,此块将从<PRE>
字符串的开头删除:
<cfif Left(DecryptedPass,5) EQ "<PRE>">
<cfset DecryptedPass = Right(DecryptedPass,(Len(DecryptedPass)-5))>
<p>Found and removed <PRE> tag = #HTMLEditFormat(DecryptedPass)#</p>
</cfif>
这个块将从</PRE>
字符串的末尾删除:
<cfif Right(DecryptedPass,6) EQ "</PRE>">
<cfset DecryptedPass = Left(DecryptedPass,(Len(DecryptedPass)-6))>
<p>Found and removed </PRE> tag = #HTMLEditFormat(DecryptedPass)#</p>
</cfif>
我只是用来HTMLEditFormat()
输出值供您在浏览器中查看。在加密或解密您的值时不要使用这些函数。
您还需要注意,该HTMLCodeFormat()
函数不仅仅将给定的字符串包装在<PRE>
标签中。该函数还将字符:<
、>
、&
和更改为"
等效的 HTML 字符实体。如果您的任何用户在他们的密码中使用了这些字符,那么您对它们的解密将失败(将不等于他们的实际密码)。
此函数将以下字符转换为 HTML 字符实体:
Text character Encoding
< <
> >
& &
" "