Java - Cipher自定义提供程序

时间:2015-12-15 19:18:56

标签: java android encryption

我有一个具有解密功能的Android应用程序:

private static byte[] decrypt(byte[] keybytes, byte[] data)
{
    SecretKeySpec key = new SecretKeySpec(keybytes, "AES");
    Cipher localCipher = Cipher.getInstance("AES/ECB/ZeroBytePadding");
    localCipher.init(2, key);
    return localCipher.doFinal(data);
}

这在应用程序中工作正常,但我需要一个java应用程序,我的电脑也能够执行解密,但以下代码给我错误:

“线程中的异常”主“java.security.NoSuchAlgorithmException:找不到任何支持AES / ECB / ZeroBytePadding的提供者”

我读到JRE没有正确的提供程序来支持这种算法(我认为它是Bouncy Castle)。

那么我该如何添加此提供程序或者替代方法来执行相同的功能呢?

1 个答案:

答案 0 :(得分:1)

您可以在项目中添加Bouncycastle提供程序,并确保在调用Cipher.getInstance()之前已使用Security类注册了提供程序。您可以通过以下方式执行此操作:

Security.addProvider(new BouncyCastleProvider());