Android是否支持AES256/CTR/NoPadding?
问题描述:
Cipher cipher = Cipher.getInstance("AES256/CTR/NoPadding")
上面代码抛出以下异常:Android是否支持AES256/CTR/NoPadding?
堆栈跟踪:java.security.NoSuchAlgorithmException: AES256/CTR/NoPadding在 javax.crypto.Cipher.getCipher(Cipher.java:296)在 javax.crypto.Cipher.getInstance(Cipher.java:174)
不支持Android “AES256/CTR/NoPadding”?这个设备是否依赖?在Android设备我测试有下列提供:
- AndroidOpenSSL版本1.0
- DRLCertFactory版本1.0
- BC 1.47版本
- 加密版本1.0
- HarmonyJSSE版本1.0
答
在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)
“在Cipher.java ......” 哪里是Cipher.java? –
https://developer.android.com/reference/javax/crypto/Cipher.html – lesniak
谢谢。我用256位密钥尝试过Cipher.getInstance(“AES/CTR/NoPadding”),并且它似乎可行。我需要一点时间来确认它。 – Hong