gpt4 book ai didi

java - 如何在 AES-128、AES-192 和 AES-256 之间切换

转载 作者:行者123 更新时间:2023-11-29 06:54:33 30 4
gpt4 key购买 nike

如何在 AES-128AES-192AES-256 之间切换。我目前的实现仅使用 AES-128

Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
IvParameterSpec ivspec = new IvParameterSpec(initialztnVector);
cipher.init(Cipher.ENCRYPT_MODE, key, ivspec);
byte[] enc = cipher.doFinal(toEncrypt);

更改为 Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

它会让 AES-256 成为可能吗?我应该怎么做才能拥有 AES-192

最佳答案

正如@zaph 已经提到的,只需提供一个 256 位 key 作为输入,它就可以工作(无论使用何种模式(例如 CBC)或填充)。

此外,正如@KevinO 所提到的,您可能必须安装无限强度策略文件(here 对于 Java 8)以支持 256 位 AES 安全性。

但是有时,尤其是当您需要分发软件时,并不总是可以更改客户端计算机上的策略文件。 虽然不推荐,因为您可能会违反 Java 许可协议(protocol),但您可以使用反射来绕过限制,而无需更改默认策略文件。移植自此 link ,只需使用将在类加载期间运行的代码片段。然后,您可以使用任何受支持的 key 大小。

static {
try {
Field field = Class.forName("javax.crypto.JceSecurity").getDeclaredField("isRestricted");
field.setAccessible(true);
field.set(null, java.lang.Boolean.FALSE);
} catch (Exception ex) {
//Report the exception
}
}

关于java - 如何在 AES-128、AES-192 和 AES-256 之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37139036/

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