0

ECB と ZeroBytePadding で AES を使用してデータを暗号化する Android アプリがあります。その環境ではすべてが正常に機能します。次のように、暗号化されたデータは問題なく 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 に変更することはできません。

4

1 に答える 1

0

実際には、そのようなアルゴリズムは実際にはありません。ここで公式のJavaドキュメントを見てくださいhttp://docs.oracle.com/javase/7/docs/api/javax/crypto/Cipher.html

于 2013-03-21T09:45:34.587 に答える