• IOS AES 加密 IOS AES 加密 IOS AES 加密 IOS AES 加密 IOS AES 加密
  • iOS AES128加密解密

    2020-05-15 15:07:28
    AES加密在iOS上面的实现,仅供学习参考,从别人那借鉴来的!
  • iOS AES128加解密

    2017-04-19 15:44:41
    最近有个项目用过AES128 的加解密,搜了不少资料,最后封装了一个公共方法,分享一下。代码如下一:.h文件#import <Foundation/Foundation.h>@interface FSAES128 : NSObject/** * 加密 * * @param string 需要...

    最近有个项目用过AES128 的加解密,搜了不少资料,最后封装了一个公共方法,分享一下。代码如下

    一:.h文件

    #import <Foundation/Foundation.h>
    
    @interface FSAES128 : NSObject
    
    /**
     *  加密
     *
     *  @param string 需要加密的string
     *
     *  @return 加密后的字符串
     */
    + (NSString *)AES128EncryptStrig:(NSString *)string;
    
    /**
     *  解密
     *
     *  @param string 加密的字符串
     *
     *  @return 解密后的内容
     */
    + (NSString *)AES128DecryptString:(NSString *)string;
    @end
    

    二:.m文件

    #import "FSAES128.h"
    #import "NSData+AES128.h"
    
    #define IV  @"偏移量 16位长度的字符串"
    #define  KEY  @"key值 16位长度的字符串"
    
    @implementation FSAES128
    
    /**
     *  加密
     *
     *  @param string 需要加密的string
     *
     *  @return 加密后的字符串
     */
    + (NSString *)AES128EncryptStrig:(NSString *)string{
        NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
        NSData *aesData = [data AES128EncryptWithKey:KEY iv:IV];
        return [FSAES128 convertDataToHexStr:aesData];
    }
    
    /**
     *  解密
     *
     *  @param string 加密的字符串
     *
     *  @return 解密后的内容
     */
    + (NSString *)AES128DecryptString:(NSString *)string{
        NSData *data  = [FSAES128 convertHexStrToData:string];
        NSData *aesData = [data AES128DecryptWithKey:KEY iv:IV];
        return [[NSString alloc] initWithData:aesData encoding:NSUTF8StringEncoding];
    }
    
    //16进制转换为NSData
    + (NSData*)convertHexStrToData:(NSString*)str {
        if (!str || [str length] ==0) {
            return nil;
        }
    
        NSMutableData *hexData = [[NSMutableData alloc]initWithCapacity:[str length]*2];
        NSRange range;
        if ([str length] %2==0) {
            range = NSMakeRange(0,2);
        } else {
            range = NSMakeRange(0,1);
        }
        for (NSInteger i = range.location; i < [str length]; i +=2) {
            unsigned int anInt;
            NSString *hexCharStr = [str substringWithRange:range];
            NSScanner *scanner = [[NSScanner alloc]initWithString:hexCharStr];
    
            [scanner scanHexInt:&anInt];
            NSData *entity = [[NSData alloc]initWithBytes:&anInt length:1];
            [hexData appendData:entity];
    
            range.location+= range.length;
            range.length=2;
        }
    //    NSLog(@"hexdata: %@", hexData);
        return hexData;
    }
    
    //NSData转换为16进制
    + (NSString*)convertDataToHexStr:(NSData*)data {
        if (!data || [data length] ==0) {
            return @"";
        }
        NSMutableString *string = [[NSMutableString alloc]initWithCapacity:[data length]/2];
    
        [data enumerateByteRangesUsingBlock:^(const void*bytes,NSRange byteRange,BOOL*stop) {
            unsigned char *dataBytes = (unsigned  char*)bytes;
            for (NSInteger i =0; i < byteRange.length; i++) {
                NSString *hexStr = [NSString stringWithFormat:@"%x", (dataBytes[i]) & 0xff];
                if ([hexStr length] ==2) {
                    [string appendString:hexStr];
                } else {
                    [string appendFormat:@"0%@", hexStr];
                }
            }
        }];
    
        return string;
    }
    
    @end
    

    三:NSData+AES128文件

    #import <Foundation/Foundation.h>
    #import <CommonCrypto/CommonCryptor.h>
    @interface NSData (AES128)
    /**
     *  加密
     *
     *  @param key 公钥
     *  @param iv  偏移量
     *
     *  @return 加密之后的NSData
     */
    - (NSData *)AES128EncryptWithKey:(NSString *)key iv:(NSString *)iv;
    /**
     *  解密
     *
     *  @param key 公钥
     *  @param iv  偏移量
     *
     *  @return 解密之后的NSData
     */
    - (NSData *)AES128DecryptWithKey:(NSString *)key iv:(NSString *)iv;
    
    @end
    
    #import "NSData+AES128.h"
    
    @implementation NSData (AES128)
    /**
     *  根据CCOperation,确定加密还是解密
     *
     *  @param operation kCCEncrypt -> 加密  kCCDecrypt->解密
     *  @param key       公钥
     *  @param iv        偏移量
     *
     *  @return 加密或者解密的NSData
     */
    - (NSData *)AES128Operation:(CCOperation)operation key:(NSString *)key iv:(NSString *)iv
    
    {
    
        char keyPtr[kCCKeySizeAES128 + 1];
    
        memset(keyPtr, 0, sizeof(keyPtr));
    
        [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
    
    
    
        char ivPtr[kCCBlockSizeAES128 + 1];
    
        memset(ivPtr, 0, sizeof(ivPtr));
    
        [iv getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding];
    
    
    
        NSUInteger dataLength = [self length];
    
        size_t bufferSize = dataLength + kCCBlockSizeAES128;
    
        void *buffer = malloc(bufferSize);
    
    
    
        size_t numBytesCrypted = 0;
    
        CCCryptorStatus cryptStatus = CCCrypt(operation,
    
                                              kCCAlgorithmAES128,
    
                                              kCCOptionPKCS7Padding,
    
                                              keyPtr,
    
                                              kCCBlockSizeAES128,
    
                                              ivPtr,
    
                                              [self bytes],
    
                                              dataLength,
    
                                              buffer,
    
                                              bufferSize,
    
                                              &numBytesCrypted);
    
        if (cryptStatus == kCCSuccess) {
    
            return [NSData dataWithBytesNoCopy:buffer length:numBytesCrypted];
    
        }
    
        free(buffer);
    
        return nil;
    
    }
    
    
    - (NSData *)AES128EncryptWithKey:(NSString *)key iv:(NSString *)iv
    
    {
    
        return [self AES128Operation:kCCEncrypt key:key iv:iv];
    
    }
    
    
    - (NSData *)AES128DecryptWithKey:(NSString *)key iv:(NSString *)iv
    
    {
    
        return [self AES128Operation:kCCDecrypt key:key iv:iv];
    
    }
    
    @end

    四:使用方法

    //加密的字段
    NSString *str = @"75677F53D5688E1FE9AC073E324B76BC6CCD8CCC05509FBF74375B40BDE50DA0B6A153355D82567B1E2FAAC96600C61064E9820AEA58E72C1DA3D3108F6DABE81E1766200F7183B0AB1F093B368F03321CB0D14EDDD57E3E64C2549FEC04C25187F8008AB90E4B7D0B69256A0467A923C56F004F721207C3A69E30D3470C08601523D79BE3F4907FC69A7CB02C747782ABC4A7F6D52CACB72DAE92984FFD73CA";
    
    //解密字符串
    NSString *contentStr = [FSAES128 AES128DecryptString:str];
    contentStr 解密值:
    {
        "freezeMoney": 0,
        "ordersMoney": null,
        "roleCode": 2,
        "status": 0,
        "totalMoney": 500,
        "userCode": "116092100000006",
        "userName": "13691116842",
        "walletId": "1"
    }
    
    展开全文
  • iOS加密:AES

    2017-12-29 17:08:33
    关于iOS部分加密算法简单介绍做过的项目中使用过的加密算法: RSA AES MD5 AES:对称加密算法 AES是一种对称加密算法,加密和解密密钥为同一个,密钥的长度最少支持为128、192、256,分组长度128位。 关键代码//...

    AES:对称加密算法

    AES是一种对称加密算法,加密和解密密钥为同一个,密钥的长度最少支持为128、192、256,分组长度128位。

    我们项目中是AES加密完成之后再用Base64加密一下,所以解密的时候就需要先解密Base64,再进行AES解密,Base64这步并不是必须的。

    关键代码

    //定义加密密钥长度类型
    typedef NS_ENUM(NSInteger, AESType) {
        AES128 = 0,
        AES192,
        AES256
    };
    
    //AES加密实现
    + (NSString *)aesEncrypt:(NSString *)string key:(NSString *)key {
        NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
        NSData * result = [self aes:data key:key mode:kCCEncrypt type:AES128];
        if (result.length == 0) {return @"";}
        NSString *resultStr = nil;
        NSData * aesData = [NSData dataWithBytes:(const void *)result.bytes length:result.length];
        NSData *tmpData = [aesData base64EncodedDataWithOptions:0];
        resultStr = [[NSString alloc] initWithData:tmpData encoding:NSUTF8StringEncoding];;
        if (resultStr.length == 0) {return @"";}
        return resultStr;
    }
    //AES解密
    + (NSString *)aesDecrypt:(NSString *)string key:(NSString *)key {
        NSData *data = [[NSData alloc] initWithBase64EncodedString:string options:NSDataBase64DecodingIgnoreUnknownCharacters];
        NSData* result = [self aes:data key:key mode:kCCDecrypt type:AES128];
        NSString * resultStr = nil;
        if (result.length == 0) {return @"";}
        resultStr = [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];
        if (resultStr.length == 0) {return @"";}
        return resultStr;
    }
    //加解密算法实现
    + (NSData *)aes:(NSData *)data key:(NSString *)key mode:(CCOperation)operation type:(AESType)type {
        NSInteger size;
        switch (type) {
            case AES128:
                size = kCCKeySizeAES128;
                break;
            case AES192: {
                size = kCCKeySizeAES192;
            }
                break;
            case AES256: {
                size = kCCKeySizeAES256;
            }
                break;
            default:
                size = kCCKeySizeAES128;
                break;
        }
        char keyPtr[size + 1];
        bzero(keyPtr, sizeof(keyPtr));
        [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
        NSUInteger dataLength = data.length;
        size_t bufferSize = dataLength + kCCBlockSizeAES128;
        void * buffer = malloc(bufferSize);
        size_t numBytesDecrypted = 0;
        NSString * initIv = [self iv];
        char ivPtr[size + 1];
        memset(ivPtr, 0, sizeof(ivPtr));
        [initIv getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding];
        NSData * result;
        CCCryptorStatus cryptStatus = CCCrypt(operation,
                                              kCCAlgorithmAES128,
                                              kCCOptionPKCS7Padding,
                                              keyPtr,
                                              size,
                                              ivPtr,
                                              data.bytes,
                                              dataLength,
                                              buffer,
                                              bufferSize,
                                              &numBytesDecrypted);
        if (cryptStatus == kCCSuccess) {
            result = [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
            return result;
    
        } else {
            free(buffer);
            return nil;
        }
    }
    
    //偏移量
    + (NSString *)iv {
        if (self.aesType == AES128) {
            return @"8841054029634287";
        }
        if (self.aesType == AES192) {
            return @"884105402963428788410540";
        }
        if (self.aesType == AES256) {
            return @"88410540296342878841054029634287";
        }
        return @"";
    }
    

    源码下载链接

    展开全文
  • ios AES128加密解密算法

    2014-09-06 09:12:32
    闲话不多说 直接上代码: ...+(NSString *)AES128Encrypt:(NSString *)plainText {  // int kCCKeySizeAES128;  // int kCCBlockSizeAES128;      char keyPtr[kCCKeySizeAES128+1];  memse



    闲话不多说 直接上代码:


    加密:

    +(NSString *)AES128Encrypt:(NSString *)plainText

    {

        //    int kCCKeySizeAES128;

        //    int kCCBlockSizeAES128;

        

        

        char keyPtr[kCCKeySizeAES128+1];

        memset(keyPtr, 0, sizeof(keyPtr));

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

        

        char ivPtr[kCCBlockSizeAES128+1];

        memset(ivPtr, 0, sizeof(ivPtr));

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

        

        NSData* data = [plainText dataUsingEncoding:NSUTF8StringEncoding];

        NSUInteger dataLength = [data length];

        

        int diff = kCCKeySizeAES128 - (dataLength % kCCKeySizeAES128);

        int newSize = 0;

        

        if(diff > 0)

        {

            newSize = dataLength + diff;

        }

        

    //    char dataPtr[newSize];

        Byte dataPtr[newSize];

        memcpy(dataPtr, [data bytes], [data length]);

        for(int i = 0; i < diff; i++)

        {

            dataPtr[i + dataLength] = 0x00;

        }

        

        size_t bufferSize = newSize + kCCBlockSizeAES128;

        void *buffer = malloc(bufferSize);

        memset(buffer, 0, bufferSize);

        

        size_t numBytesCrypted = 0;

        

      NSString *key = SERVICE_key;

        

        NSData *testData = [[key md5HexDigest] dataUsingEncoding: NSUTF8StringEncoding];


        Byte *testByte = (Byte *)[testData bytes];



        

        Byte keyByte[16];

        

        for(int i=8;i<[testData length];i++){

            

            if (i==24) {

                break;

            }

    //        NSLog(@"testByte = %d\n",testByte[i]);

            keyByte[i-8]=testByte[i];

            

        }

        


        

        CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,

                                              kCCAlgorithmAES128,

                                              0X0000,               //No padding

                                              keyByte,

                                              kCCKeySizeAES128,

                                              ivPtr,

                                              dataPtr ,

                                              sizeof(dataPtr),

                                              buffer,

                                              bufferSize,

                                              &numBytesCrypted);

        


            if (cryptStatus == kCCSuccess) {

            NSData *resultData = [NSData dataWithBytesNoCopy:buffer length:numBytesCrypted];

            return [GTMBase64New stringByEncodingData:resultData];

        }

        free(buffer);

        return nil;

    }


    解密

    +(NSString *)AES128Decrypt:(NSString *)encryptText

    {

        char keyPtr[kCCKeySizeAES128 + 1];

        memset(keyPtr, 0, sizeof(keyPtr));

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

        

        char ivPtr[kCCBlockSizeAES128 + 1];

        memset(ivPtr, 0, sizeof(ivPtr));

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

        

        NSData *data = [GTMBase64New decodeData:[encryptText dataUsingEncoding:NSUTF8StringEncoding]];

        NSUInteger dataLength = [data length];

        size_t bufferSize = dataLength + kCCBlockSizeAES128;

        void *buffer = malloc(bufferSize);

        

        size_t numBytesCrypted = 0;

    //    NSData *testData = [gkey dataUsingEncoding: NSUTF8StringEncoding];


      NSString *key = SERVICE_key;


        NSData *testData = [[key md5HexDigest] dataUsingEncoding: NSUTF8StringEncoding];

        

        Byte *testByte = (Byte *)[testData bytes];


        

        Byte keyByte[16];

        

        for(int i=8;i<[testData length];i++){

            

            if (i==24) {

                break;

            }

            keyByte[i-8]=testByte[i];

            

        }

        

        

        CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,

                                              kCCAlgorithmAES128,

                                              0X0000,

                                              keyByte,

                                              kCCKeySizeAES128,

                                              ivPtr,

                                              [data bytes],

                                              dataLength,

                                              buffer,

                                              bufferSize,

                                              &numBytesCrypted);

        

        

        if (cryptStatus == kCCSuccess) {

            NSData *resultData = [NSData dataWithBytesNoCopy:buffer length:numBytesCrypted];

            return [[[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding] autorelease];

        }

        free(buffer);

        return nil;

    }



    将key就是一次md5加密 获得标准的固定16位字符,  ;

    所有key 以及加密算法都要和后台一致 才能成功;


    展开全文
  • [objc] view ...//////////////AES加密方式: AES 128 ECB PKCS7Padding 16进制加密解密 //////////////   NSString *originalStr=@"AES";     //加密   NSString *encryStr = [AES128U
    [objc] view plain copy
    1. //////////////AES加密方式: AES 128 ECB PKCS7Padding 16进制加密解密  //////////////  
    2.     NSString *originalStr=@"AES";  
    3.   
    4.     //加密  
    5.     NSString *encryStr = [AES128Util AES128Encrypt:originalStr key:AES_KEY];  
    6.     //解密  
    7.     NSString *decryStr = [AES128Util AES128Decrypt:encryStr key:AES_KEY];  
    8.       
    9.     NSLog(@"\n加密前:%@\n加密后:%@ \n解密后:%@",originalStr,encryStr,decryStr);  


    [objc] view plain copy
    1. //  
    2. //  AES128Util.h  
    3. //  ASE128Demo  
    4. //  
    5. //  Created by zhenghaishu on 11/11/13.  
    6. //  Copyright (c) 2013 Youku.com inc. All rights reserved.  
    7. //  
    8.   
    9. #import <Foundation/Foundation.h>  
    10.   
    11. @interface AES128Util : NSObject  
    12.   
    13. +(NSString *)AES128Encrypt:(NSString *)plainText key:(NSString *)key;  
    14.   
    15. +(NSString *)AES128Decrypt:(NSString *)encryptText key:(NSString *)key;  
    16.   
    17. @end  


    [objc] view plain copy
    1. //  
    2. //  AES128Util.m  
    3. //  ASE128Demo  
    4. //  
    5. //  Created by zhenghaishu on 11/11/13.  
    6. //  Copyright (c) 2013 Youku.com inc. All rights reserved.  
    7. //  
    8.   
    9. #import "AES128Util.h"  
    10. #import <CommonCrypto/CommonCryptor.h>  
    11. #import "GTMBase64.h"  
    12.   
    13. @implementation AES128Util  
    14.   
    15. +(NSString *)AES128Encrypt:(NSString *)plainText key:(NSString *)key  
    16. {  
    17.     char keyPtr[kCCKeySizeAES128+1];  
    18.     memset(keyPtr, 0sizeof(keyPtr));  
    19.     [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];  
    20.       
    21.     NSData* data = [plainText dataUsingEncoding:NSUTF8StringEncoding];  
    22.     NSUInteger dataLength = [data length];  
    23.       
    24.     size_t bufferSize = dataLength + kCCBlockSizeAES128;  
    25.     voidvoid *buffer = malloc(bufferSize);  
    26.     size_t numBytesEncrypted = 0;  
    27.     CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,  
    28.                                           kCCAlgorithmAES128,  
    29.                                           kCCOptionPKCS7Padding|kCCOptionECBMode,  
    30.                                           keyPtr,  
    31.                                           kCCBlockSizeAES128,  
    32.                                           NULL,  
    33.                                           [data bytes],  
    34.                                           dataLength,  
    35.                                           buffer,  
    36.                                           bufferSize,  
    37.                                           &numBytesEncrypted);  
    38.     if (cryptStatus == kCCSuccess) {  
    39.         NSData *resultData = [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];  
    40.         //return [GTMBase64 stringByEncodingData:resultData];  
    41.         return [self hexStringFromData:resultData];  
    42.   
    43.     }  
    44.     free(buffer);  
    45.     return nil;  
    46. }  
    47.   
    48.   
    49. +(NSString *)AES128Decrypt:(NSString *)encryptText key:(NSString *)key  
    50. {  
    51.     char keyPtr[kCCKeySizeAES128 + 1];  
    52.     memset(keyPtr, 0sizeof(keyPtr));  
    53.     [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];  
    54.       
    55.     //NSData *data = [GTMBase64 decodeData:[encryptText dataUsingEncoding:NSUTF8StringEncoding]];  
    56.       
    57.     NSData *data=[self dataForHexString:encryptText];  
    58.       
    59.     NSUInteger dataLength = [data length];  
    60.     size_t bufferSize = dataLength + kCCBlockSizeAES128;  
    61.     voidvoid *buffer = malloc(bufferSize);  
    62.       
    63.     size_t numBytesCrypted = 0;  
    64.     CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,  
    65.                                           kCCAlgorithmAES128,  
    66.                                           kCCOptionPKCS7Padding|kCCOptionECBMode,  
    67.                                           keyPtr,  
    68.                                           kCCBlockSizeAES128,  
    69.                                           NULL,  
    70.                                           [data bytes],  
    71.                                           dataLength,  
    72.                                           buffer,  
    73.                                           bufferSize,  
    74.                                           &numBytesCrypted);  
    75.     if (cryptStatus == kCCSuccess) {  
    76.         NSData *resultData = [NSData dataWithBytesNoCopy:buffer length:numBytesCrypted];  
    77.         return [[[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding] autorelease];  
    78.     }  
    79.     free(buffer);  
    80.     return nil;  
    81. }  
    82.   
    83. // 普通字符串转换为十六进  
    84. + (NSString *)hexStringFromData:(NSData *)data {  
    85.     Byte *bytes = (Byte *)[data bytes];  
    86.     // 下面是Byte 转换为16进制。  
    87.     NSString *hexStr = @"";  
    88.     for(int i=0; i<[data length]; i++) {  
    89.         NSString *newHexStr = [NSString stringWithFormat:@"%x",bytes[i] & 0xff]; //16进制数  
    90.         newHexStr = [newHexStr uppercaseString];  
    91.           
    92.         if([newHexStr length] == 1) {  
    93.             newHexStr = [NSString stringWithFormat:@"0%@",newHexStr];  
    94.         }  
    95.           
    96.         hexStr = [hexStr stringByAppendingString:newHexStr];  
    97.           
    98.     }  
    99.     return hexStr;  
    100. }  
    101.   
    102. //参考:http://blog.csdn.net/linux_zkf/article/details/17124577  
    103. //十六进制转Data  
    104. + (NSData*)dataForHexString:(NSString*)hexString  
    105. {  
    106.     if (hexString == nil) {  
    107.           
    108.         return nil;  
    109.     }  
    110.       
    111.     const char* ch = [[hexString lowercaseString] cStringUsingEncoding:NSUTF8StringEncoding];  
    112.     NSMutableData* data = [NSMutableData data];  
    113.     while (*ch) {  
    114.         if (*ch == ' ') {  
    115.             continue;  
    116.         }  
    117.         char byte = 0;  
    118.         if ('0' <= *ch && *ch <= '9') {  
    119.               
    120.             byte = *ch - '0';  
    121.         }else if ('a' <= *ch && *ch <= 'f') {  
    122.               
    123.             byte = *ch - 'a' + 10;  
    124.         }else if ('A' <= *ch && *ch <= 'F') {  
    125.               
    126.             byte = *ch - 'A' + 10;  
    127.               
    128.         }  
    129.           
    130.         ch++;  
    131.           
    132.         byte = byte << 4;  
    133.           
    134.         if (*ch) {  
    135.               
    136.             if ('0' <= *ch && *ch <= '9') {  
    137.                   
    138.                 byte += *ch - '0';  
    139.                   
    140.             } else if ('a' <= *ch && *ch <= 'f') {  
    141.                   
    142.                 byte += *ch - 'a' + 10;  
    143.                   
    144.             }else if('A' <= *ch && *ch <= 'F'){  
    145.                   
    146.                 byte += *ch - 'A' + 10;  
    147.                   
    148.             }  
    149.               
    150.             ch++;  
    151.               
    152.         }  
    153.           
    154.         [data appendBytes:&byte length:1];  
    155.           
    156.     }  
    157.       
    158.     return data;  
    159. }  
    160.   
    161. @end  

    AES在线加密工具

    http://www.seacha.com/tools/aes.html?src=wenhan123455678888050i33i206279278&mode=ECB&keylen=128&key=1234567890123456&iv=1234567890123456&bpkcs=pkcs7padding&session=FH4xlZr0LlqsJVtwfbVw&aes=ac518f9f8429369bf129da6d6633cbb2&encoding=hex&type=0

    参考工程:https://github.com/zhenghaishu/AES128-for-iOS



    http://pan.baidu.com/s/1jHmo9Pc

    展开全文
  • IOS AES加密之ECB128模式

    2019-07-07 15:35:26
    1、AES加密模式有好几种,网上大多是CBC、256模式,找了好久才找到解决ECB128模式加密。 AES需要导入头文件 #import <CommonCrypto/CommonCryptor.h> #import "GTMBase64.h" //加密后的数据在Base64转字符...

     

    1、AES加密模式有好几种,网上大多是CBC、256模式,找了好久才找到解决ECB128模式加密。

    AES需要导入头文件

    #import <CommonCrypto/CommonCryptor.h>

    #import "GTMBase64.h" //加密后的数据在Base64转字符串类型

    +(NSString *)AES128Encrypt:(NSString *)plainText key:(NSString *)key
    {
        char keyPtr[kCCKeySizeAES128+1];
        memset(keyPtr, 0, sizeof(keyPtr));
        [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
        
        NSData* data = [plainText dataUsingEncoding:NSUTF8StringEncoding];
        NSUInteger dataLength = [data length];
        
        size_t bufferSize = dataLength + kCCBlockSizeAES128;
        void *buffer = malloc(bufferSize);
        size_t numBytesEncrypted = 0;
        CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,
                                              kCCAlgorithmAES128,
                                              kCCOptionPKCS7Padding|kCCOptionECBMode,
                                              keyPtr,
                                              kCCBlockSizeAES128,
                                              NULL,
                                              [data bytes],
                                              dataLength,
                                              buffer,
                                              bufferSize,
                                              &numBytesEncrypted);
        if (cryptStatus == kCCSuccess) {
            NSData *resultData = [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
            return [GTMBase64 stringByEncodingData:resultData];
        }
        free(buffer);
        return nil;
    }

     

    直接放 Demo: AES/ECB模式128Demo下载 密码:qj57

     

    转载于:https://www.cnblogs.com/qq95230/p/5908175.html

    展开全文
  • 1、AES128
  • iOS AES-128-ECB 加密

    2019-10-13 20:38:50
    最近在做PHP和iOS项目,iOS这边的aes加密PHP解密不了,然后去站长工具解密iOS加密的密文才知道是iOS加密和解密出了问题 这篇博文很好解决了这个问题https://www.jianshu.com/p/c05d6fc8ccc2 ...
  • 使用iOS 原生AES加密

    2017-11-09 11:35:08
    使用iOS 原生AES加密
  • AES是开发中常用的加密算法之一。然而由于前后端开发使用的语言不统一,导致经常出现前端加密而后端不能解密的情况出现。然而无论什么语言系统,AES的算法总是相同的, 因此导致结果不一致的原因在于 加密设置的...
  • 在网上找了很多相关的AES加密方式,遇到的问题有:1、ios与Android调通,而java后台不能使用;2、Android与java调通,ios不能使用 在搜索大片资源后,终于发现了一款适合的,我们都是代码搬运工,(*^__^*) 嘻嘻...
  • iOS AES的加密解密

    2014-10-15 15:18:56
    iOS AES的加密解密
  • 项目开发过程中,经常会使用各种加密手段来保证数据的安全性,常见的有MD5,DES,AES等等。摘取百度百科AES词条的简介:AES即高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称...
  • +(NSString *)AES128Encrypt:(NSString *)plainText key:(NSString *)key { char keyPtr[kCCKeySizeAES128+1]; memset(keyPtr, 0, sizeof(keyPtr)); [key getCString:keyPtr maxLength:sizeof(keyPtr) e...
  • 我想关于AES算法大家应该都已经了解了,我就不多介绍了。这是本人第一次写技术博文,如果有不对之处欢迎大家指正,共同讨论,一起学习!  之前在项目上用到AES256加密解密算法,刚开始在java端加密解密都没有问题...
  • 因为在项目中,需要在与客户端(IOS,Android)交互的时候,保存一些私有信息,不被别人看到,所以,使用了比较流行的可以反向加解密的AES。 PHP 源码 $aes = new aes; echo $aes->aes128cbcEncrypt("11122222");...
  • iOS AES加密

    2019-07-19 17:24:18
    AES 美国国家安全局采用的加密方法,MAC 系统自带的钥匙串也是采用的AES 加密方法 有两种模式 CBC 模式 链式加密 ,密码块链,使用一个秘钥和一个初始化向量,对数据执行加密。 ECB 电子密码本方法加密,数据拆分成...
1 2 3 4 5 ... 20
收藏数 6,042
精华内容 2,416
关键字:

128 aes ios