Objective c 在目标C中解密AES
我是加密新手 问题: 我得到了一组加密字符串,我需要解密它们以显示给移动客户端用户。对于android,它可以很好地解密,我使用下面的方法“解密”。对于iOS,我在将此java方法转换为Objective C时遇到了很多困难。我尝试使用NSData+CommonCrypto、RNCryptor。它们都将返回一些解密的数据,但是当将解密的数据转换为字符串时,它将始终为零 目标: 将java解密方法转换为目标C(使用秘密密钥解密目标C中的字符串) 任何建议、评论、意见和伪代码都将不胜感激。谢谢 Android解密方法Objective c 在目标C中解密AES,objective-c,encryption,cryptography,commoncrypto,rncryptor,Objective C,Encryption,Cryptography,Commoncrypto,Rncryptor,我是加密新手 问题: 我得到了一组加密字符串,我需要解密它们以显示给移动客户端用户。对于android,它可以很好地解密,我使用下面的方法“解密”。对于iOS,我在将此java方法转换为Objective C时遇到了很多困难。我尝试使用NSData+CommonCrypto、RNCryptor。它们都将返回一些解密的数据,但是当将解密的数据转换为字符串时,它将始终为零 目标: 将java解密方法转换为目标C(使用秘密密钥解密目标C中的字符串) 任何建议、评论、意见和伪代码都将不胜感激。谢谢 An
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;
}
}
JavaGetInstance方法应该提供所有必要的信息,而不是依赖默认值。例如:“AES/CBC/PKCS5Padding(128)”、“AES/ECB/NoPadding(128)”或其他组合 对于“AES”规范,我会猜测:ECB模式(非常糟糕的选择)、PKCS5Padding,以及根据需要填充的基于提供的密钥null的密钥长度
请参阅文档。您需要提供输入和输出示例以及模式、填充类型(如果有)和iv(如果CBC模式和任何)。将这些输入的十六进制重复数添加到问题中。如果其中一些未知,还提供指向加密库的链接。许多加密库都有内部默认值,许多库也不提供这些信息。Java
getInstance
方法应该提供所有必要的信息,而不依赖默认值。例如:“AES/CBC/PKCS5Padding(128)”、“AES/ECB/NoPadding(128)”或其他组合。对于“AES”规范,我会猜测:ECB模式(非常糟糕的选择)、PKCS5Padding,以及根据需要填充的基于提供的密钥null的密钥长度。请参阅文档。使用Objective-C代码更新您的问题,以便人们指出您的问题。@zaph您的第二条评论解决了我的问题。“AES/CBC/PKCS5P(128)”。谢谢。