标签:
#import "NSString+MFDES.h" #import <CommonCrypto/CommonCrypto.h> // key 必须8位 #define key @"01234567" // 向量 static Byte iv[] = {1, 2, 3, 4, 5, 6, 7, 8}; @implementation NSString (MFDES) // 1. 字符串对称加密(DES) - (NSString *)stringWithDES{ // 1. 将字符串本身转化为C字符串 const char *string = [self UTF8String]; // 2. 接收容器 unsigned char byte[1024]; // 3. 容器大小 size_t dataOutMoved = 0; // 4. DES加密过程 // 1. 参数1. 加密 或者 解密 // 2. 参数2: 加密 / 解密 方式 // 3. 参数3: 分组密码的选项 // 4. 参数4: 秘钥 // 5. 参数5: 秘钥的大小 // 6. 参数6: 向量 // 7. 参数7: c的字符串 // 8. 参数8: 字符串的长度 // 9. 参数9: 接收容器 // 10. 参数10: 容器的大小 // 11. 参数11: 容器最终的个数 CCCryptorStatus cryptorStatus = CCCrypt(kCCEncrypt, kCCAlgorithmDES, kCCOptionPKCS7Padding, [key UTF8String], kCCKeySizeDES, iv, string, strlen(string), byte, 1024, &dataOutMoved); if (cryptorStatus == kCCSuccess) { // 转成字符串 ==== base64返回 NSLog(@"加密成功"); NSData *desData = [NSData dataWithBytes:byte length:dataOutMoved]; NSString *desBaseString = [desData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; return desBaseString; } else { NSLog(@"加密失败"); } return @""; } // 2. 字符串对称解密(DES) - (NSString *)desWithString{ NSData *base64Data = [[NSData alloc] initWithBase64EncodedString:self options:NSDataBase64DecodingIgnoreUnknownCharacters]; const void *byte = base64Data.bytes; unsigned char buffer[1024]; size_t dataOutMoved = 0; // C 语言方法 CCCryptorStatus cryptorStatus = CCCrypt(kCCDecrypt, kCCAlgorithmDES, kCCOptionPKCS7Padding, [key UTF8String], kCCKeySizeDES, iv, byte, base64Data.length, buffer, 1024, &dataOutMoved); if (cryptorStatus == kCCSuccess) { NSLog(@"解密成功"); NSData *desData = [NSData dataWithBytes:buffer length:dataOutMoved]; NSString *desBaseString = [[NSString alloc] initWithData:desData encoding:NSUTF8StringEncoding]; return desBaseString; } else { NSLog(@"解密失败"); } return @""; }
标签:
原文地址:http://www.cnblogs.com/mafeng/p/5777842.html