gpt4 book ai didi

encryption - ColdFusion解密编码不一样

转载 作者:行者123 更新时间:2023-12-04 12:50:06 25 4
gpt4 key购买 nike

我正在尝试使用 ColdFusion 的 Decrypt() 函数解密字符串,但收到“编码不相同...”错误。

这些是我被指示从字符串源采取的步骤:

  1. 创建共享 key 的 MD5 散列
  2. 使用 TripeDES 和 ECB 的密码,用共享 key 的 MD5 散列解密加密的字符串

代码:

<cfset qKey = hash('shared_key','MD5') />
<cfset dc = Decrypt('string_to_decrypt', qkey, 'DESEDE/ECB/PKCS5Padding', 'Base64') />
<cfdump var="#dc#">

错误:

An error occurred while trying to encrypt or decrypt your input string: The input and output encodings are not same.


更新:

也尝试了以下,但它抛出同样的错误:

<cfset finalText   = "WVJrOdkntkQ%3d">
<cfset theKey = "S3C016" />
<cfset theKeyInBase64 = toBase64(theKey)>
<cfset hashedKey = hash( theKeyInBase64, "md5" ) />
<cfset padBytes = left( hashedKey, 16 ) />

<cfset keyBytes = binaryDecode( hashedKey & padBytes , "hex" ) />
<cfset finalKey = binaryEncode( keyBytes, "base64" ) />
<cfset decrypted = decrypt( finalText, finalKey, "DESede/ECB/PKCS5Padding", "base64" ) />

Decrypted String: <cfdump var="#decrypted#">

最佳答案

These are the steps I was instructed to take

老实说,这些天当我看到有关使用 TripleDES 的建议时,我总是觉得有点不安。作为Zach pointed out它不再被认为是安全的,取而代之的是更强大的算法,如 AES。另外,从wiki article images可以清楚的看到说明为什么不鼓励使用 ECB 模式:“它不能很好地隐藏数据模式”。 (旁注,在散列领域,MD5 不久前也被更强大的算法超越了)。最重要的是,我强烈建议与向您提供说明的任何人讨论所选算法,因为它们不是很安全。

但是,要回答您的问题,有几个问题:

  1. 您的代码表明加密值是 base64 编码的。但是,它包含一个百分号 % 符号,该符号不是 base64 的有效字符。我猜这个值是 url 编码的,必须先解码:

    <cfset encryptedText = urlDecode("WVJrOdkntkQ%3d")>
  2. Hash()返回一个十六进制字符串。 encrypt()函数要求 key 采用 base64 编码。

  3. MD5 哈希返回十六 (16) 个字节。虽然这是 TripleDES 的有效 key 大小,但 CF/Java 实现 only supports 24 byte keys .您需要用前八 (8) 个字节填充 key 以使其大小合适。

    <cfset originalKey = hash("S3C016","MD5")>
    <cfset padChars = left(originalKey, 16)>
    <cfset keyBytes = binaryDecode(originalKey & padChars, "hex")>
    <cfset newKeyString = binaryEncode(keyBytes, "base64")>

进行上述更改将解决错误并允许您成功解密字符串。结果应该是“20”。

    <cfset dc = Decrypt(encryptedText, newKeyString, "DESEDE/ECB/PKCS5Padding", "Base64")  />
<cfdump var="#dc#">

关于encryption - ColdFusion解密编码不一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40136245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com