java - 加密 AES 128,有 2 个不同的结果

标签 java encryption aes

我正在尝试使用给定 key 的 AES-128 算法加密字符串。

通过Java实现,我使用的解决方案here .

public static void main(String[] args) {
    String key = "Bar12345Bar12345"; // 128 bit key
    String initVector = "RandomInitVector"; // 16 bytes IV

    System.out.println(encrypt(key, initVector, "System")));
}

结果:

encrypted string: iHvz04u8X7FPo7yagSLthA==

上面的结果不是我想要的,我希望ZJfsFFLjl6YS0Xys5OUVIA==System的加密值。

就像下面的测试:http://aesencryption.net/

enter image description here

有什么建议吗?

最佳答案

您的 Java 代码正在使用 IV,而基于 Web 的加密并未使用 IV。出于安全目的,您应该使用随机 IV,以便使用相同 key 对相同数据进行两次加密不会产生相同的密文。但如果您的要求是获得与基于 Web 的结果相同的结果,请完全省略初始化 vector 。

关于java - 加密 AES 128,有 2 个不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45936446/

相关文章:

PHP 加密和 Windows 解密

检测到 Android root?立即卸载应用程序

c# - 快速轻量级 .NET 客户端加密 -> 服务器解密

c - C 中的简单 AES 函数(不是库)?

c - 如何解决对 `AES_ctr128_encrypt'的 undefined reference

java - 解密错误: caused by java. lang.noclassdeffounderror com/android/org/constcrypt/OpenSSLRSAPublicKey android

java - SonarLint 在连接模式下找不到 Java "Code Smell"

java - 当我不知道泛型对象的类型时,如何避免 Java 中未经检查的方法警告?

java - 如何从特定字母列表中获取随机字母?

java - 安卓Java : How to subtract two times?