Android上是AES128还是AES256?

时间:2011-05-06 17:30:42

标签: java android encryption

问候,

在Android上,我们无法指定AES128或AES256。但使用“AES / CBC / PKCS5Padding”时AES128或AES256实际运行了吗?

我尝试了类似下面的内容

SecretKeyFactory sf = SecretKeyFactory.getInstance("PBEWITHSHAAND256BITAES-CBC-BC");
KeySpec ks = new PBEKeySpec(masterPassword.toCharArray(),k1,1320,256);
secKey = sf.generateSecret(ks);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secKey, generateIV(cipher));

创建的SecretKeyFactory的keySize为256,而PBEKeySpec中指定的keyLength似乎并不重要。无论256或128,还是任何其他正数,生成的secKey始终具有256个keySize。由于我们通过了secKey初始化密码,所以现在加密是使用AES128还是AES256运行?

谢谢!

2 个答案:

答案 0 :(得分:0)

article应该允许您确定运行时映像中可用的优势和密码。我不知道它是否会在这一点上解决你的问题,但是通过指定长度为256的PBEKeySpec,我想你可能会拥有它。

答案 1 :(得分:0)

  

在Android上,我们无法指定AES128或   AES256。但是AES128或AES256   实际上在使用时运行   “AES / CBC / PKCS5Padding”?

我错误地建议在getInstance()中确实没有确定?我想密码密钥的长度只有在调用init()之后才能确定,你设置一个具有一定长度的密钥。