zoukankan      html  css  js  c++  java
  • swift实现AES解密

    原来的加密解密是用java写的,用在安卓系统上。现在要用在iOS系统上,所以从服务器上下载过来的加密文件要用swift来实现其的解密方法。

    具体过程如下:

    给NSData增加一个类目,NSData+AES

    NSData+AES.h

    - (NSData *)AES128DecryptWithKey:(NSString *)key iv:(NSData *)iv;

    NSData+AES.m

    - (NSData *)AES128operation:(CCOperation)operation key:(NSString *)key iv:(NSData *)iv

    {

        char keyPtr[kCCKeySizeAES128 + 1];

        bzero(keyPtr, sizeof(keyPtr));

        [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];

        

        Byte key2[] = {0xF0,0x1E,0x02,0xB2,0xE3,0xC9,0x7A,0x43,0xFD,0xFE,0x31,0x1A,0x2B,0xA4,0x4C,0x60};

        

        // IV

        Byte ivPtr[kCCBlockSizeAES128 + 1];

        bzero(ivPtr, sizeof(ivPtr));

        //[iv getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding];

        [iv getBytes:&ivPtr length:16];

        

        size_t bufferSize = [self length] + kCCBlockSizeAES128;

        void *buffer = malloc(bufferSize);

        size_t numBytesEncrypted = 0;

        

        CCCryptorStatus cryptorStatus = CCCrypt(operation, kCCAlgorithmAES128, kCCOptionPKCS7Padding,

                                                key2, kCCKeySizeAES128,

                                                ivPtr,

                                                [self bytes], [self length],

                                                buffer, bufferSize,

                                                &numBytesEncrypted);

        

        if(cryptorStatus == kCCSuccess){

            NSLog(@"Success");

            return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];

        }else{

            NSLog(@"Error");

        }

        

        free(buffer);

        return nil;

    }

  • 相关阅读:
    ASP.Net软件工程师基础(四)
    ASP.Net软件工程师基础(三)
    ASP.Net软件工程师基础(二)
    ASP.Net软件工程师基础(一)
    SVN小小用法(一)svn服务器搭建
    必须声明标量变量
    用户 NT AUTHORITYNETWORK SERVICE 登录失败
    winmail安装完成后,SMTP/POP3/ADMIN/HTTP/IMAP/LDAP服务不能启动?
    CF-798C
    CF-798B
  • 原文地址:https://www.cnblogs.com/luoxiaofu/p/5610528.html
Copyright © 2011-2022 走看看