OC des加密算法算法实现

效果图:


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





  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值