0

我是加密新手

问题:

我得到了一组加密字符串,我需要将它们解密以显示给移动客户端用户。对于android,它解密得很好,我正在使用以下方法“解密”。对于 iOS,我在将这个 java 方法转换为 Objective C 时遇到了很多麻烦。我尝试使用 NSData+CommonCrypto、RNCryptor。它们都会返回一些解密数据,但是当将解密数据转换为字符串时,它总是为零。

目标:

将java解密方法翻译成Objective C(使用密钥解密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;
    }
}
4

1 回答 1

2

Java getInstance 方法应该提供所有必要的信息,而不是依赖于默认值。如:“AES/CBC/PKCS5Padding (128)”、“AES/ECB/NoPadding (128)”或其他一些组合。

使用“AES”规范,我猜想:ECB 模式(非常糟糕的选择)、PKCS5Padding 以及根据需要填充的基于提供的密钥空值的密钥长度。

请参阅类密码文档。

于 2015-06-07T02:39:15.787 回答