RE3*_*350 2 java encryption aes-gcm
我们正在尝试进行加密,支持java 7中的 AES/GCM/NoPadding 获得以下异常.
找不到任何支持AES/GCM/NoPadding的提供商
用于生成密码实例的代码示例如下.
SecretKeySpec eks = new SecretKeySpec(k, "AES");
Cipher c = Cipher.getInstance("AES/GCM/NoPadding");
c.init(Cipher.ENCRYPT_MODE, eks, new GCMParameterSpec(128, iv));
Run Code Online (Sandbox Code Playgroud)
Java 7 SE不支持此密码(Solaris的例外).
public static void main(String[] args) throws Exception {
for (Provider provider : Security.getProviders()) {
for (Map.Entry<Object, Object> entry : provider.entrySet()) {
if (((String) entry.getValue()).contains("GCM")) {
System.out.printf("key: [%s] value: [%s]%n",
entry.getKey(),
entry.getValue());
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您可以将Bouncy Castle视为服务提供商.
使用Bouncycastle的小片段.
bcprov-jdk15on-154.jar从http://www.bouncycastle.org/latest_releases.html下载在您的代码中注册服务提供商
Security.addProvider(new BouncyCastleProvider());
Run Code Online (Sandbox Code Playgroud)然后你就可以使用密码了(参数"BC"指定使用Bounce Castle作为服务提供者,如果同一个密码没有其他提供者,则可以省略)
Cipher c = Cipher.getInstance("AES/GCM/NOPADDING", "BC");
Run Code Online (Sandbox Code Playgroud)Java 8支持开箱即用的密码
Cipher c = Cipher.getInstance("AES/GCM/NOPADDING");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6805 次 |
| 最近记录: |