gpt4 book ai didi

java - 如何将 Java 中的字符串加密为与在 ColdFusion 中加密的字符串完全相同?

转载 作者:搜寻专家 更新时间:2023-11-01 02:30:19 25 4
gpt4 key购买 nike

我有在 ColdFusion 中加密的数据,我需要能够使用 Java 将其解密和加密为完全相同的值。我希望有人可以帮助我解决这个问题。我将指定 ColdFusion 中使用的所有内容,但实际的 PasswordKey 除外,出于安全目的我必须对其保密。 PasswordKey 的长度为 23 个字符。它使用大写和小写字母、数字以及 + 和 = 符号。我知道这个问题很多,但我们将不胜感激任何帮助。

我尝试使用我发现的 Java 加密示例 online并将下面的行替换为我们的 CF 应用程序中使用的 23 个字符:

private static final byte[] keyValue = new byte[] {'T', 'h', 'i', 's', 'I', 's', 'A', 'S', 'e', 'c', 'r', 'e', 't', 'K', 'e', 'y' };` 

但是我得到了错误:

java.security.InvalidKeyException: Invalid AES key length: 23 bytes

CF代码为:

Application.PasswordKey = "***********************";
Application.Algorithm = "AES";
Application.Encoding = "hex";

<cffunction name="encryptValue" access="public" returntype="string">
<cfargument name="strEncryptThis" required="yes">

<cfreturn Encrypt(TRIM(strEncryptThis), Application.PasswordKey, Application.Algorithm, Application.Encoding)>
</cffunction>


<cffunction name="decryptValue" access="public" returntype="string">
<cfargument name="strDecryptThis" required="yes">

<cfreturn Decrypt(TRIM(strDecryptThis), Application.PasswordKey, Application.Algorithm, Application.Encoding)>
</cffunction>

最佳答案

您的 key 很可能是 Base64 编码的 key (23 个字符应解码为大约 16 个字节,这是 AES 的 128 位 key 的正确长度)。

因此,在您的 Java 代码中,首先通过 Base64 解码器运行您的 key 字符串,以获得适合 AES 算法的长度(16 字节)的 byte[]。

关于java - 如何将 Java 中的字符串加密为与在 ColdFusion 中加密的字符串完全相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11017462/

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