Android支持AES256/CTR/NoPadding吗?

Hon*_*ong 3 security encryption android

Cipher cipher = Cipher.getInstance("AES256/CTR/NoPadding")
Run Code Online (Sandbox Code Playgroud)

上面的代码抛出以下异常:

堆栈跟踪:java.security.NoSuchAlgorithmException:在javax.crypto.Cipher.getCipher(Cipher.java:296)的javax.crypto.Cipher.getInstance(Cipher.java:174)中的AES256/CTR/NoPadding

Android是否支持"AES256/CTR/NoPadding"?该设备是否依赖?我正在测试的Android设备有以下提供商:

  • AndroidOpenSSL版本1.0
  • DRLCertFactory版本1.0
  • BC版本1.47
  • 加密版1.0
  • HarmonyJSSE 1.0版

Leś*_*icz 5

Cipher.java中您可以看到可用的转换.不幸的是,没有"AES256/CTR/NoPadding"(这就是为什么你会看到这个例外),但当然有"AES/CTR/NoPadding",你应该使用它.

AES密钥大小(在Cipher中使用)完全取决于Android中的密钥,因此您应该生成并使用适当长度的密钥.

在Api级别26+中,您可以直接使用"AES_256 ...",但仅适用于CBC和ECB模式(https://developer.android.com/reference/javax/crypto/Cipher.html)

  • 谢谢.我已经尝试使用256位密钥的Cipher.getInstance("AES/CTR/NoPadding"),它似乎工作.我需要一点时间来确认它. (2认同)