我有在 ColdFusion 中加密的数据,我需要能够使用 Java 解密和加密到相同的确切值。我希望有人可以帮助我解决这个问题。除了实际的 PasswordKey 之外,我将指定 ColdFusion 中使用的所有内容,出于安全目的,我必须对其保密。PasswordKey 的长度为 23 个字符。它使用大小写字母、数字以及 + 和 = 符号。我知道这是很多问题,但任何帮助将不胜感激。
我尝试使用我在网上找到的 Java 加密示例,并将下面的行替换为我们的 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>