美文网首页
ios AES256解密方法

ios AES256解密方法

作者: 天上飞的狒狒 | 来源:发表于2024-08-28 19:04 被阅读0次

    1 首先创建一个NSString分类
    这是.h文件

    #import <Foundation/Foundation.h>
    
    NS_ASSUME_NONNULL_BEGIN
    
    @interface NSString (EncryptVerbHandle)
    /**
     AES解密算法
     @param str 要解密的字符串
     @param keyStr: 解码key(需要和后台协商定义)
     @return 解密后的字符串
     */
    + (NSString *) aes256_decrypt:(NSString *) str andkey:(NSString *)keyStr;
    
    @end
    
    NS_ASSUME_NONNULL_END
    

    2 这是.m文件

    #import "NSString+EncryptVerbHandle.h" //AES256加密
    
    @implementation NSString (EncryptVerbHandle)
    // Aes解密
    + (NSString *)aes256_decrypt:(NSString *)str andkey:(NSString *)keyStr{
        //先对加密的字符串进行base64解码
        NSData *keyData = [[NSData alloc] initWithBase64EncodedString:str options:0];
        char keyPtr[kCCKeySizeAES256 + 1];
        bzero(keyPtr, sizeof(keyPtr));
        /*AES加密与解密的秘钥,需要与后台协商共同定义,保持与后台的秘钥相同*/
        [keyStr getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
        NSUInteger dataLength = [keyData length];
        size_t bufferSize           = dataLength + kCCBlockSizeAES128;
        void* buffer                = malloc(bufferSize);
        size_t numBytesDecrypted    = 0;
        CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,
                                              kCCAlgorithmAES128,
                                              kCCOptionPKCS7Padding|kCCOptionECBMode,
                                              keyPtr,
                                              kCCKeySizeAES256,
                                              NULL /* initialization vector (optional) */,
                                              [keyData bytes],
                                              dataLength, /* input */
                                              buffer,
                                              bufferSize, /* output */
                                              &numBytesDecrypted);
        if (cryptStatus == kCCSuccess) {
            NSData *data = [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
            NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            return result;
        }else{
            free(buffer);
            return nil;
        }
    }
    @end
    
    

    3 调用
    先引入 #import "NSString+EncryptVerbHandle.h" //AES解密

    NSString *mb256Str = [NSString aes256_decrypt:@"xxx" andkey:@"xxx"];
    //mb256Str就是解码完的参数
    

    要注意这几个参数,参数不同,解密的规则不同
    kCCAlgorithmAES128
    kCCKeySizeAES256

    相关文章

      网友评论

          本文标题:ios AES256解密方法

          本文链接:https://www.haomeiwen.com/subject/stvtljtx.html