DES加密(支持ARC与MRC)

源文件:

YXCrypto.h 与 YXCrypto.m

//
//  YXCrypto.h
//  用秘钥给字符串加密或者解密
//
//  Created by YouXian on 14-11-16.
//  Copyright (c) 2014年 YouXian. All rights reserved.
//

#import <Foundation/Foundation.h>@interface YXCrypto : NSObject/*!* 给字符串加密*/
+ (NSString *)DesEncryptString:(NSString*)src WithKey:(NSString *)key;/*!* 给字符串解密*/
+ (NSString *)DesDecryptString:(NSString*)src WithKey:(NSString *)key;@end

//
//  YXCrypto.m
//  用秘钥给字符串加密或者解密
//
//  Created by YouXian on 14-11-16.
//  Copyright (c) 2014年 YouXian. All rights reserved.
//

#import "YXCrypto.h"
#import <CommonCrypto/CommonCryptor.h>#if __has_feature(objc_arc)
// ARC
#define Auto_Release(obj)
#define Safe_Release(obj)
#else
// 非ARC
#define Auto_Release(obj) [obj autorelease]
#define Safe_Release(obj) [obj release]; obj = nil
#endifstatic YXCrypto *shareInstance = nil;@implementation YXCrypto/*!* 给字符串加密*/
+ (NSString *)DesEncryptString:(NSString*)src WithKey:(NSString *)key {NSString* strRet = @"";if (shareInstance == nil){shareInstance = [[YXCrypto alloc] init];}// encrypt source contentNSData* bytes = [src dataUsingEncoding:NSUTF8StringEncoding];NSData* data = [shareInstance DesCryptWithOperation:kCCEncryptbytes:byteskey:key];// format bytes to visible stringchar* pBuff = (char*)[data bytes];for (int i=0; i<data.length; i++) {strRet = [strRet stringByAppendingFormat:@"%02X", pBuff[i]& 0xFF];}return strRet;
}/*!* 给字符串解密*/
+ (NSString *)DesDecryptString:(NSString*)src WithKey:(NSString *)key
{if (shareInstance == nil){shareInstance = [[YXCrypto alloc] init];}static unsigned char _map_ch2hex[] ={0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,0, 0, 0, 0, 0, 0, 0,    // :, ;, <, =, >, ?, @,0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,};// decode source content to bytesunsigned char* bytes = (unsigned char*)malloc((src.length+1)*sizeof(unsigned char));[[src uppercaseString] getCString:(char*)bytes maxLength:src.length+1 encoding:NSUTF8StringEncoding];unsigned char *p1 = bytes, *p2 = bytes;unsigned long n = src.length/2;for (int i=0; i<n; i++) {*p1 = _map_ch2hex[*p2-'0'] * 0x10 + _map_ch2hex[*(p2+1)-'0'];p1++;p2+=2;}NSData* data = [NSData dataWithBytes:byteslength:n];// decrypt source bytesNSData* dataOut = [shareInstance DesCryptWithOperation:kCCDecryptbytes:datakey:key];free(bytes);NSString* strRet = [[NSString alloc] initWithData:dataOutencoding:NSUTF8StringEncoding];Auto_Release(strRet);return strRet;
}- (NSData *)DesCryptWithOperation:(CCOperation)operation bytes:(NSData*)bytes key:(NSString *)key {NSUInteger dataLength = [bytes length];size_t bufferSize = ([bytes length] + kCCBlockSizeDES) & ~(kCCBlockSizeDES - 1);unsigned char *buffer = (unsigned char *)malloc(bufferSize*sizeof(unsigned char));memset((void*)buffer, 0, bufferSize);size_t numBytesCrypted = 0;CCCryptorStatus cryptStatus = CCCrypt(operation,kCCAlgorithmDES,kCCOptionPKCS7Padding | kCCOptionECBMode,(void const*)[key UTF8String],kCCKeySizeDES,NULL,[bytes bytes], dataLength,(void*)buffer, bufferSize,&numBytesCrypted);NSData* dataRet = nil;if (cryptStatus == kCCSuccess) {dataRet = [[NSData alloc] initWithBytes:buffer length:numBytesCrypted];Auto_Release(dataRet);}free(buffer);return dataRet;
}@end

此类是用类方法,使用非常便利:

DES加密(支持ARC与MRC)相关推荐

  1. IOS、java支持DES加密

    最近在考虑数据加密方面的需求,所以对数据加密简单的看了一下,当然不是看的原理,只是看看怎么能够实现.现在我们需要实现的是移动端和后台(java)数据加解密的配合,开始的时候考虑的使用RSA,因为RSA ...

  2. java ios des加密解密_IOS、java支持DES加密

    转载请注明博客地址:http://blog.csdn.net/mengxiangyue/article/details/40015727 近期在考虑数据加密方面的需求,所以对数据加密简单的看了一下,当 ...

  3. js实现在线DES加密解密(支持各种工作模式,填充模式)

    具体请参考:在线实现DES加密解密

  4. 文本的DES加密 MD5散列值 DSA的数字签名

    作者:未知 文本的DES加密 为了对称加密的安全,将密码进行封装,先新建一个用于保存密码的类库cl: using System; using System.Text ; namespace cl { ...

  5. DES加密解密与AES加密解密

    × 目录 [1]AES加密算法和DES加密算法的效率比较 [2]AES和DES加密解密代码 随着开发时间的变长,当初认为比较难的东西,现在渐渐也就变的不那么难了!特别对于一些经常很少使用的类,时间长了 ...

  6. linux下des加密命令,linux下的DES加密

     linux下的DES加密 des_crypt, ecb_crypt, cbc_crypt, des_setparity, DES_FAILED 都是用于DES快速加密 调用格式 #include ...

  7. 转载并学习实现三重DES加密解密代码(一)

    作者:finallyliuyu 出处:博客园 声明:此篇博文代码来自于邹德强先生.由于目前找到的版本是残缺版,所以我又进行了补全.读一份好代码,可以领略到作者的编程风格和语言驾驭能力,同时又能从其中汲 ...

  8. DES加密解密算法(前端后端)

    DES加密解密算法(前端&后端) 原作者 阿弥陀佛1114  原文链接:https://blog.csdn.net/zong1114/article/details/51754470 DES对 ...

  9. des加密的c语言程序,C++中四种加密算法之DES源代码

    DES算法是一种最通用的对称密钥算法,因为算法本身是公开的,所以其安全性在于密钥的安全性.基于密钥的算法通常有两类:对称算法和公开密钥算法.对称算法的对称性体现在加密密钥能够从解密密钥推算出来,反之亦 ...

  10. php ecb加密,PHP之DES加密解密算法类(ECB模式)(实例教程)

    PHP中加密解密函数与DES加密解密的应用实例:<?php define('SMS_KEY', 'K0e5293b'); class DesUtil{ public function encry ...

最新文章

  1. 【正则表达式系列】一些概念(字符组、捕获组、非捕获组)
  2. 计算机可执行指令吧,电脑“开始-运行”的常用命令及用法!很有用!
  3. RedHat/CentOS发行版本号及内核版本号对照表
  4. 【NLP】从整体视角了解情感分析、文本分类!
  5. JavaScript实现SelectionSort选择排序算法(附完整源码)
  6. resharper警告 :linq replace with single call to FirstOrDefault
  7. java线程创建过程_Java创建线程的细节分析
  8. [蓝桥杯][2019年第十届真题c/c++B组]迷宫(寻找路径bfs及文件输入输出)
  9. Window中的Docker 拉取Mysql镜像 并在本地Navicate链接
  10. 结合webpack配置_呕心沥血编写的webpack多入口零基础配置 【建议收藏】
  11. 问题三十六:ray tracing中的Inverse Mapping(3)——圆盘Inverse Mapping
  12. @QueryParam和@PathParam的区别
  13. ajax的三种传参方式
  14. SpringBoot 读取 jar 包中 BOOT-INF/lib 下的 jar包
  15. 已经有了阿里云OSS还需要开通CDN吗?
  16. MYSQL学习整理(4):函数
  17. 删除域中的Exchange服务器
  18. C++每日一课(八)
  19. 美国企业邮箱怎么注册,有没有可替代国外邮箱的国内邮箱?
  20. [LTTng学习之旅]------环境搭建

热门文章

  1. Pandas:删除行、列---DataFram.drop()
  2. Promise.then(a, b)与Promise.then(a).catch(b)问题详解
  3. Jmeter (二十五)逻辑控制器 之 Random Controller and Random order Controller
  4. 简单ajax跨域请求
  5. Codeforces 875C National Property(拓扑排序)
  6. 模拟(堆):USACO Jan11 瓶颈
  7. pagerTabStrip例子
  8. 懂得永恒,得要我们进化成更好的人。
  9. Ubutu: mysql + jdk + tomcat installation
  10. php - MySQL创建数据库和数据表