DES加密(支持ARC与MRC)
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
#endif static YXCrypto *shareInstance = nil; @implementation YXCrypto /*!
* 给字符串加密
*/
+ (NSString *)DesEncryptString:(NSString*)src WithKey:(NSString *)key {
NSString* strRet = @""; if (shareInstance == nil)
{
shareInstance = [[YXCrypto alloc] init];
} // encrypt source content
NSData* bytes = [src dataUsingEncoding:NSUTF8StringEncoding];
NSData* data = [shareInstance DesCryptWithOperation:kCCEncrypt
bytes:bytes
key:key]; // format bytes to visible string
char* pBuff = (char*)[data bytes];
for (int i=; 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,
, , , , , , , // :, ;, <, =, >, ?, @,
0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
}; // decode source content to bytes
unsigned char* bytes = (unsigned char*)malloc((src.length+)*sizeof(unsigned char));
[[src uppercaseString] getCString:(char*)bytes maxLength:src.length+ encoding:NSUTF8StringEncoding];
unsigned char *p1 = bytes, *p2 = bytes;
unsigned long n = src.length/;
for (int i=; i<n; i++) {
*p1 = _map_ch2hex[*p2-''] * 0x10 + _map_ch2hex[*(p2+)-''];
p1++;
p2+=;
}
NSData* data = [NSData dataWithBytes:bytes
length:n]; // decrypt source bytes
NSData* dataOut = [shareInstance DesCryptWithOperation:kCCDecrypt
bytes:data
key:key];
free(bytes); NSString* strRet = [[NSString alloc] initWithData:dataOut
encoding: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 - );
unsigned char *buffer = (unsigned char *)malloc(bufferSize*sizeof(unsigned char));
memset((void*)buffer, , bufferSize); size_t numBytesCrypted = ;
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)的更多相关文章
- IOS、java支持DES加密
转载请注明博客地址:http://blog.csdn.net/mengxiangyue/article/details/40015727 近期在考虑数据加密方面的需求,所以对数据加密简单的看了一下,当 ...
- (iOS)Base64加密和DES加密、以及JAVA和iOS中DES加密统一性问题
我们在项目中为了安全方面的考虑,通常情况下会选择一种加密方式对需要安全性的文本进行加密,而Base64加密和DES64加密是常用的加密算法.我记得我在前一个项目中使用的就是这两种加密算法的结合:Bas ...
- iOS 开发之路(AES/DES加密实现) 三
最近接触的这个项目由于以前服务器上用的是DES/CBC/PKCS5Padding加密方式,为了让在iOS上的加密结果与服务器端保持一致,我做了很多尝试,现在分享给大家.PS:现在不推荐用DES了,只是 ...
- php des 加密解密实例
des加密是对称加密中在互联网应用的比较多的一种加密方式,php 通过mcrypt扩展库来支持des加密,要在Php中使用des加密,需要先安装mcrypt扩展库 $iv_size = mcrypt_ ...
- net-snmp源码VS2013编译添加加密支持(OpenSSL)
net-snmp源码VS2013编译添加加密支持(OpenSSL) snmp v3 协议使用了基于用户的安全模型,具有认证和加密两个模块. 认证使用的算法是一般的消息摘要算法,例如MD5/SHA等.这 ...
- net-snmp源码VS2013编译添加加密支持(OpenSSL)(在VS里配置编译OpenSSL)
net-snmp源码VS2013编译添加加密支持(OpenSSL) snmp v3 协议使用了基于用户的安全模型,具有认证和加密两个模块. 认证使用的算法是一般的消息摘要算法,例如MD5/SHA等.这 ...
- paip.提升安全性----Des加密 java php python的实现总结
paip.提升安全性----Des加密 java php python的实现总结 /////////// uapi private static String decryptBy ...
- .NET DES 加密
using System; using System.Collections.Generic; using System.Text; using System.Security; using Syst ...
- DES加密解密与AES加密解密
随着开发时间的变长,当初认为比较难的东西,现在渐渐也就变的不那么难了!特别对于一些经常很少使用的类,时间长了之后渐渐就陌生了.所以在这里写一些日后可能会用到的加密与解密. 一.AES加密算法和DES加 ...
随机推荐
- SharePoint 2013创建应用程序时IIS端口文件夹下没文件
最近SharePoint 2007迁移到2013的时候,碰到创建应用程序时IIS端口文件夹下没文件的问题,网上找了大把的原因,终于在这里找到了解决方案: Fix: 1. Open IIS on the ...
- SQL更改表架构
修改SQL架构: ALTER SCHEMA 新架构 TRANSFER 旧架构.对象名称
- [转载]Angular4 组件通讯方法大全
组件通讯,意在不同的指令和组件之间共享信息.如何在两个多个组件之间共享信息呢. 最近在项目上,组件跟组件之间可能是父子关系,兄弟关系,爷孙关系都有.....我也找找了很多关于组件之间通讯的方法,不同的 ...
- C#在.NET编译执行过程
1..NET语言的编译器接受源代码文件,并生成名为程序集的输出文件. 程序集要么是可执行的,要么是DLL 程序集里的代码并不是本机代码,而是一种名称为CIL的中间语言 程序集包含如下信息: 程序的CI ...
- 如何使用 Telegram
Telegram是一款加密的实时通讯软件,本文告诉大家如何使用 这个软件. 在使用之前,需要保证自己已经开了梯子,如果没有梯子,那么就无法使用这个工具. 假如梯子是 127.0.0.1 端口 1080 ...
- 【转】SpringBoot系列之—瘦身部署
一.前言 SpringBoot部署起来虽然简单,如果服务器部署在公司内网,速度还行,但是如果部署在公网(阿里云等云服务器上),部署起来实在头疼: 编译出来的 Jar 包很大,如果工程引入了许多开源组件 ...
- 【转】启动tomcat的时候一直卡在INFO: Deploying web application
在用centos7.+不熟tomcat项目的时候,启动时突然很奇怪的没报错,但是又访问不了网址,调用./shutdown.sh又结束不了,一直出现: java.net.ConnectException ...
- 理解 RESTful 架构(转)
前言:REST指的是一组架构约束条件和原则." 如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构. 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种& ...
- 各种IDE的使用
sharpdevelop http://blog.sina.com.cn/s/blog_d1001bff0101di7p.html
- Android手动显示和隐藏软键盘
1.方法一(如果输入法在窗口上已经显示,则隐藏,反之则显示) InputMethodManager imm = (InputMethodManager) getSystemService(Contex ...