首页 > 学院 > 开发设计 > 正文

OC des加密算法算法实现

2019-11-09 16:59:59
字体:
来源:转载
供稿:网友

效果图:

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表