0

有没有遵循这个算法在iOS中解密/解密字符串的方法?我只知道在java中这个类:javax.crypto.Cipher 用于此目的

4

2 回答 2

0

Apple Common Crypto 确实支持 AES、ECB 模式(使用 CBC 模式)和无填充。如果不使用填充,输入数据长度必须是 AES 块大小(16 字节)的精确倍数,标准填充是PKCS#7(née PKCS#5)。

您最好使用支持安全加密的解决方案,例如支持多种语言和平台的RNCryptor 。

仅仅使用加密并不能提供安全性,它必须与其他加密原语一起正确使用。

于 2016-09-03T11:01:14.593 回答
0

Apple 的 Common Crpto 确实支持它。导入 CommonCryptor.h 和 CCCryptorStatus "CCCrypt" 是你所需要的。

这是一个例子:

+ (NSData *)encryptDataWithAESECB:(NSData *)data
                              key:(NSData *) key
                            error:(NSError **)error {
    size_t outLength;

    int cipherLen = (int)(data.length/kAlgorithmBlockSize + 1)*kAlgorithmBlockSize;
    NSMutableData *cipherData = [NSMutableData dataWithLength:cipherLen];
    NSData *newData = [self addPaddingBeforeEncryptWithAESECB:data];

    CCCryptorStatus result = CCCrypt(kCCEncrypt, // operation
                                     kAlgorithm, // Algorithm
                                     kCCOptionECBMode, // Mode
                                     key.bytes, // key
                                     key.length, // keylength
                                     0,// iv
                                     newData.bytes, // dataIn
                                     newData.length, // dataInLength,
                                     cipherData.mutableBytes, // dataOut
                                     cipherData.length, // dataOutAvailable
                                     &outLength); // dataOutMoved
    if (result == kCCSuccess) {
        cipherData.length = outLength;
    }else {
        if (error) {
            *error = [NSError errorWithDomain:kRNCryptManagerErrorDomain code:result userInfo:nil];
        }
        return nil;
    }
    return cipherData;
}

有关更多信息,请参阅我的帖子: AES ECB iOS Encrypt

于 2018-02-01T09:39:21.297 回答