0
API19(Java 7)以下でcipher.updateAAD()
を使用するにはどうすればよいですか?私はBouncyCastleを使うことができますが、AEADの暗号化と復号化のバックポートは提供していません。サードパーティのライブラリはありますか?私はAES/GCM/NoPadding
を使用しています。Java 7より下のCipher.updateAAD()Javaの
API19(Java 7)以下でcipher.updateAAD()
を使用するにはどうすればよいですか?私はBouncyCastleを使うことができますが、AEADの暗号化と復号化のバックポートは提供していません。サードパーティのライブラリはありますか?私はAES/GCM/NoPadding
を使用しています。Java 7より下のCipher.updateAAD()Javaの
実際、BouncyCastleは、AADを含め、必要なものすべてを提供しています。 AES/GCMでは、次の方法を使用できます。
static byte[] gcmDecrypt(byte[] ct, byte[] key, byte[] iv, byte[] aad) throws Exception {
AEADParameters parameters = new AEADParameters(new KeyParameter(key), 128, iv, aad);
GCMBlockCipher gcmEngine = new GCMBlockCipher(new AESFastEngine());
gcmEngine.init(false, parameters);
byte[] pt = new byte[gcmEngine.getOutputSize(ct.length)];
int len = gcmEngine.processBytes(ct, 0, ct.length, pt, 0);
gcmEngine.doFinal(pt, len);
return pt;
}
static byte[] gcmEncrypt(byte[] pt, byte[] key, byte[] iv, byte[] aad) throws Exception {
AEADParameters parameters = new AEADParameters(new KeyParameter(key), 128, iv, aad);
GCMBlockCipher gcmEngine = new GCMBlockCipher(new AESFastEngine());
gcmEngine.init(true, parameters);
byte[] ct = new byte[gcmEngine.getOutputSize(pt.length)];
int len = gcmEngine.processBytes(pt, 0, pt.length, ct, 0);
gcmEngine.doFinal(ct, len);
return ct;
}