效果图:
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 point
int 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