iOS DES加密的方法

#pragma mark- DES加密算法

+ (NSString*)encrypt:(NSString*)sText encryptOrDecrypt:(CCOperation)encryptOperation

{

constvoid*dataIn;

size_tdataInLength;

constNSString*key =@"";//和服务器约定的key

if(encryptOperation ==kCCDecrypt)//传递过来的是decrypt解码

{

//解码base64

NSData*decryptData = [GTMBase64decodeData:[sTextdataUsingEncoding:NSUTF8StringEncoding]];//转成utf-8并decode

dataInLength = [decryptDatalength];

dataIn = [decryptDatabytes];

}

else//encrypt

{

NSData* encryptData = [sTextdataUsingEncoding:NSUTF8StringEncoding];

dataInLength = [encryptDatalength];

dataIn = (constvoid*)[encryptDatabytes];

}

CCCryptorStatusccStatus;

uint8_t*dataOut =NULL;//可以理解位type/typedef的缩写(有效的维护了代码,比如:一个人用int,一个人用long。最好用typedef来定义)

size_tdataOutAvailable =0;//size_t是操作符sizeof返回的结果类型

size_tdataOutMoved =0;

dataOutAvailable = (dataInLength +kCCBlockSizeDES) & ~(kCCBlockSizeDES-1);

dataOut =malloc( dataOutAvailable *sizeof(uint8_t));

memset((void*)dataOut,0x0, dataOutAvailable);//将已开辟内存空间buffer的首1个字节的值设为值0

NSString*initIv =@"";//和上面的key一致

constvoid*vkey = (constvoid*) [keyUTF8String];

constvoid*iv = (constvoid*) [initIvUTF8String];

//CCCrypt函数加密/解密

ccStatus =CCCrypt(encryptOperation,//加密/解密

kCCAlgorithmDES,//加密根据哪个标准(des,3des,aes。。。。)

kCCOptionPKCS7Padding,//选项分组密码算法(des:对每块分组加一次密3DES:对每块分组加三个不同的密)

vkey,//密钥加密和解密的密钥必须一致

kCCKeySizeDES,//DES密钥的大小(kCCKeySizeDES=8)

iv,//可选的初始矢量

dataIn,//数据的存储单元

dataInLength,//数据的大小

(void*)dataOut,//用于返回数据

dataOutAvailable,

&dataOutMoved);

NSString*result =nil;

if(encryptOperation ==kCCDecrypt)//encryptOperation==1解码

{

//得到解密出来的data数据,改变为utf-8的字符串

result = [[NSStringalloc]initWithData:[NSDatadataWithBytes:(constvoid*)dataOutlength:(NSUInteger)dataOutMoved]encoding:NSUTF8StringEncoding];

}

else//encryptOperation==0(加密过程中,把加好密的数据转成base64的)

{

//编码base64

NSData*data = [NSDatadataWithBytes:(constvoid*)dataOutlength:(NSUInteger)dataOutMoved];

result = [GTMBase64stringByEncodingData:data];

}

returnresult;

}

GTMBase64文件地址:https://pan.baidu.com/s/1kUTPrqJ

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • /**ios常见的几种加密方法: 普通的加密方法是讲密码进行加密后保存到用户偏好设置( [NSUserDefaul...
    彬至睢阳阅读 3,076评论 0 7
  • 首先罗列一些知识点: 1.加密算法通常分为对称性加密算法和非对称性加密算法:对于对称性加密算法,信息接收双方都需事...
    JonesCxy阅读 1,474评论 2 4
  • 引言 如今手机app五彩缤纷,确保手机用户的数据安全是开发人员必须掌握的技巧,下面通过实例介绍DES在androi...
    freesan44阅读 1,179评论 1 1
  • 1.数据安全 01数据安全的原则1)在网络上"不允许"传输用户隐私数据的"明文"2.)在本地"不允许"保存用户隐私...
    小枫123阅读 526评论 0 1
  • [耶]【微商公社 成就微商】 【】见证【】 【微商公社特种兵内训第四天】 我慕容钰成功的看到、听到、感觉到18 天...
    慕容培训教练阅读 294评论 0 1