我是加密新手
问题:
我获得了一组加密字符串,我需要解密它们以向移动客户端用户显示。对于android,它解密很好,我使用以下方法"解密"。对于iOS,我在将此java方法转换为Objective C时遇到了很多麻烦。我尝试过使用NSData + CommonCrypto,RNCryptor。它们都将返回一些解密数据,但是当将解密数据转换为字符串时,它将始终为零。
目标:
将java decrypt方法转换为Objective C(使用secrete密钥解密Objective C中的字符串)
任何建议,评论,意见,伪代码将不胜感激。感谢
Android解密方法
public static String decrypt(String message){
try {
Cipher c = Cipher.getInstance("AES");
SecretKeySpec key = new SecretKeySpec(secrKey.getBytes(), "AES");
c.init(Cipher.DECRYPT_MODE, key);
byte[] decordedValue = Base64.decode(message.getBytes(), Base64.DEFAULT);
byte[] decValue = c.doFinal(decordedValue);
String decryptedValue = new String(decValue);
String decoded = new String(Base64.decode(decryptedValue, Base64.DEFAULT));
return decoded;
}catch(Exception e){
return null;
}
}
答案 0 :(得分:2)
Java getInstance方法应该提供所有必要的信息,而不是依赖于默认值。如:“AES / CBC / PKCS5Padding(128)”,“AES / ECB / NoPadding(128)”或其他一些组合。
使用“AES”规范,我猜:ECB模式(非常糟糕的选择),PKCS5Padding,以及根据需要填充的密钥null填充的密钥长度。
请参阅Class Cipher文档。