簡體   English   中英

加密解密AES / ECB / NoPadding

[英]Encryption Decryption AES/ECB/NoPadding

遵循此算法,iOS中是否有任何方法可以解密/解密字符串? 我所知道的所有在java中的此類:javax.crypto.Cipher用於此目的

Apple Common Crypto確實支持AES,ECB模式(使用CBC模式)並且沒有填充。 如果不使用填充,則輸入數據長度必須是AES塊大小的精確倍數(16字節),標准填充為PKCS#7 (néePKCS#5)。

使用支持安全加密的解決方案(例如支持多種語言和平台的RNCryptor)會更好。

僅使用加密不能提供安全性,它必須與其他加密原語一起正確使用。

蘋果的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加密

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM