效果图:
1.双方约定好秘钥
2.加密utl
//// EncryptUtl.m// L22test//// Created by Liyanjun on 16/7/13.// Copyright © 2016年 Liyanjun. All rights reserved.//#import "EncryptUtl.h"#import <CommonCrypto/CommonCryptor.h>#import "GTMBase64.h"@implementation EncryptUtl#PRagma mark- 产生密钥+(NSString *)makeKey{ NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyyMMdd HH:mm:ss"]; NSDate *date = [NSDate date]; NSString *firstDate = [dateFormatter stringFromDate:date]; return firstDate;}#pragma mark- 加密算法const Byte iv[] = {1,2,3,4,5,6,7,8};+(NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key{ NSString *ciphertext = nil; NSData *textData = [plainText dataUsingEncoding:NSUTF8StringEncoding]; NSUInteger dataLength = [textData length];// unsigned char buffer[1024]; size_t bufferSize = dataLength + kCCBlockSizeDES; void *buffer = malloc(bufferSize); memset(buffer, 0, sizeof(char)); size_t numBytesEncrypted = 0; CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmDES, kCCOptionPKCS7Padding, [key UTF8String], kCCKeySizeDES, iv, [textData bytes], dataLength, buffer, bufferSize, &numBytesEncrypted); NSLog(@"cryptStatus=%d",cryptStatus); if (cryptStatus == kCCSuccess) { NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted]; ciphertext = [GTMBase64 encodeBase64Data:data]; } return ciphertext;}+(NSString *)decryptUseDES:(NSString *)cipherText key:(NSString *)key{ NSString *plaintext = nil; NSData *cipherdata = [GTMBase64 decodeString:cipherText];// unsigned char buffer[102400]; NSUInteger dataLength = [cipherdata length]; size_t bufferSize = dataLength + kCCBlockSizeDES; void *buffer = malloc(bufferSize); memset(buffer, 0, sizeof(char)); size_t numBytesDecrypted = 0; CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmDES, kCCOptionPKCS7Padding, [key UTF8String], kCCKeySizeDES, iv, [cipherdata bytes], [cipherdata length], buffer, bufferSize, &numBytesDecrypted); if(cryptStatus == kCCSuccess) { NSData *plaindata = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesDecrypted]; plaintext = [[NSString alloc]initWithData:plaindata encoding:NSUTF8StringEncoding]; } return plaintext;}@end加密测试文档
//// main.m// L22test//// Created by Liyanjun on 16/1/16.// Copyright © 2016年 Liyanjun. All rights reserved.//#import <Foundation/Foundation.h>#import "EncryptUtl.h"#import "AppUtil.h"//方法1#define POINT struct pointint main(int argc, const char * argv[]) { @autoreleasepool { NSString* fromString=@"测试加密数据"; NSString* key=@"b4196703d61af1bc87e20f2111143883"; NSLog(@"密钥是%@",key); NSString* toString1=[EncryptUtl encryptUseDES:fromString key:key]; NSLog(@"加密后是%@",toString1); NSLog(@"解密后是%@",[EncryptUtl decryptUseDES:toString1 key:key]); } return 0; }demo下载:
http://download.csdn.net/detail/liyanjun201/9749070
新闻热点
疑难解答