gpt4 book ai didi

Android AES 加密 192 位 key

转载 作者:太空狗 更新时间:2023-10-29 14:25:46 27 4
gpt4 key购买 nike

我想使用 192 位 key 加密数据。

SecretKeySpec key = new SecretKeySpec(new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, "AES/CBC/NoPadding");
byte[] data = new byte[] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
byte[] encrypted = null;
try {
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
cipher.init(Cipher.ENCRYPT_MODE, key);
encrypted = cipher.doFinal(data);
} catch (Exception e) {
System.out.println(e.getMessage());
}

但加密不是真的。而且每次数组的内容都不一样。为什么?

最佳答案

您正在使用 CBC 模式,它需要一个初始化向量 (IV)。由于您没有明确设置一个,因此每次加密时都会生成一个随机的。您必须:

  • 使用静态 IV(不推荐),或者
  • 将IV连同密文发送给C++程序

这里是如何在 Java 中设置 IV,对于 C++,请引用您正在使用的库的文档:

 byte[] iv = generateIv(cipher.getBlockSize());
IvParameterSpec ivParams = new IvParameterSpec(iv);
cipher.init(Cipher.ENCRYPT_MODE, key, ivParams);

关于Android AES 加密 192 位 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12798048/

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