问候,
在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运行?
谢谢!
答案 0 :(得分:0)
此article应该允许您确定运行时映像中可用的优势和密码。我不知道它是否会在这一点上解决你的问题,但是通过指定长度为256的PBEKeySpec,我想你可能会拥有它。
答案 1 :(得分:0)
在Android上,我们无法指定AES128或 AES256。但是AES128或AES256 实际上在使用时运行 “AES / CBC / PKCS5Padding”?
我错误地建议在getInstance()中确实没有确定?我想密码密钥的长度只有在调用init()之后才能确定,你设置一个具有一定长度的密钥。