【问题标题】:Cipher.getInstance() is failing with java.security.NoSuchAlgorithmException: Cannot find any provider supporting AES/ECB/ZeroBytePaddingCipher.getInstance() 因 java.security.NoSuchAlgorithmException 失败:找不到任何支持 AES/ECB/ZeroBytePadding 的提供程序
【发布时间】:2013-03-03 20:57:14
【问题描述】:

我有一个 Android 应用程序,它使用带有 ECB 和 ZeroBytePadding 的 AES 加密数据。在那种环境下一切正常:加密数据在 Android 中被解密没有问题,如下所示:

public static String encrypt(byte[] raw, byte[] clear) throws Exception {
    SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
    Cipher cipher = Cipher.getInstance("AES/ECB/ZeroBytePadding");
    cipher.init(Cipher.ENCRYPT_MODE, skeySpec);

    byte[] encrypted = cipher.doFinal(clear);
    return android.util.Base64.encodeToString(encrypted, android.util.Base64.NO_WRAP);
}

public static byte[] decrypt(byte[] raw, byte[] encrypted) throws Exception {
    SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
    Cipher cipher = Cipher.getInstance("AES/ECB/ZeroBytePadding");
    cipher.init(Cipher.DECRYPT_MODE, skeySpec);

    byte[] decrypted = cipher.doFinal(encrypted);
    return decrypted;
}

但是,我最近决定在 Web 应用程序中解密数据,当我尝试使用相同的 decrypt() 方法时,Cipher.getInstance("AES/ECB/ZeroBytePadding") 抛出异常:

java.security.NoSuchAlgorithmException: Cannot find any provider supporting     
AES/ECB/ZeroBytePadding

我假设某些 Android 库提供了 javax.crypto.Cipher 中缺少的合适密码提供程序。有没有其他人遇到过这个问题或知道我能做些什么?将密码填充更改为 PKCS5PADDING 不是一个选项,因为许多消息已经使用早期选项加密。

【问题讨论】:

  • 由于 Android 使用 Bouncy Castle 的修改版本,您是否尝试将 Bouncy Castle 添加到您的环境中并将其用作javax.crypto 提供程序?
  • 我不知道。因此,我将 bcprov-jdk150n-148.jar 添加到我的 NetBeans 库中,并将 org.bouncycastle.jcajce.provider.symmetric.* 导入到 Java 文件中,但我仍然遇到同样的错误。我仍在使用 javax.crypto.Cipher; BouncyCastle 中是否有等价物?

标签: android web-applications encryption-symmetric aescryptoserviceprovider


【解决方案1】:

其实真的没有这样的算法。在这里查看官方 java 文档http://docs.oracle.com/javase/7/docs/api/javax/crypto/Cipher.html

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 2017-07-27
    • 2016-10-07
    • 2014-05-31
    相关资源
    最近更新 更多