iOS之Des加密(含资源及Demo)
来源:互联网 发布:算法的乐趣 怎么样 编辑:程序博客网 时间:2024/05/22 18:55
一,说明
最近有人在群中问我des加密的事,告诉我网上的将des的资料很少. 会者不难,难着不会.
二,代码呈现(Demo在本文最后).
在做des加密,解密时,你需要和服务端约定2个字段.
第一个字段:比如"xxxx" 这个字段和做图片上传约定的字段一个道理, 便于服务器唯一识别;
第二个字段:为iV[ ] 这个字段会在下图,及Demo中标注出来.
导入:
#import <CommonCrypto/CommonDigest.h>
#import <CommonCrypto/CommonCryptor.h>
#import "GTMBase64.h"
由于GTMBase64是MRC,所以:要添加 -fno-objc-arc
代码呈现:
/*字符串加密 *参数 *plainText : 加密明文 *key : 密钥 64位 为和后台约定的字段示例为xxxx */+ (NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key{ NSString *ciphertext = nil; const char *textBytes = [plainText UTF8String]; NSUInteger dataLength = [plainText length]; unsigned char buffer[1024]; memset(buffer, 0, sizeof(char)); Byte iv[] = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; //注:iv[] = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }为移动端和后台约定的字段 size_t numBytesEncrypted = 0; CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmDES, kCCOptionPKCS7Padding, [key UTF8String], kCCKeySizeDES, iv, textBytes, dataLength, buffer, 1024, &numBytesEncrypted); if (cryptStatus == kCCSuccess) { NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted]; ciphertext = [[NSString alloc] initWithData:[GTMBase64 encodeData:data] encoding:NSUTF8StringEncoding]; } return ciphertext;}//解密+ (NSString *) decryptUseDES:(NSString*)cipherText key:(NSString*)key{ NSData* cipherData = [GTMBase64 decodeString:cipherText]; unsigned char buffer[1024]; memset(buffer, 0, sizeof(char)); size_t numBytesDecrypted = 0; Byte iv[] = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; //注:iv[] = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }为移动端和后台约定的字段 CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmDES, kCCOptionPKCS7Padding, [key UTF8String], kCCKeySizeDES, iv, [cipherData bytes], [cipherData length], buffer, 1024, &numBytesDecrypted); NSString* plainText = nil; if (cryptStatus == kCCSuccess) { NSData* data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesDecrypted]; plainText = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; } return plainText;}
三,DES加密出现的问题及Demo地址.
1,我曾将手机号DES加密成字符串,上传到服务器,发现有一些手机号加密后的字段有加号("+") 服务端会将加号转为空格 ,导致解密不出来. 那么解决方法是:给des加密后的字符串进行url编码, 再上传服务器.
2,Des加密数组是出现过丢失的情况,请看我这篇文章:iOS之POST请求数组样式参数DES加密问题Demo github地址:https://github.com/LuochuanAD/DESEncryption
3 0
- iOS之Des加密(含资源及Demo)
- DES 加密Demo
- ios开发之DES+Base64 加密、解密
- iOS POS之3DES加密
- iOS 面试问答之加密形式: AES加密, DES加密, MD5加密,SHA1加密, BASE64加密
- java DES 加密解密DEMO
- java 实现DES加密 demo
- iOS DES加密与3DES加密
- DES加密之3DES
- ios des加密
- ios des加密
- ios的DES加密
- 常用加密解密类(含3des)
- 对称加密之DES
- 加密工具之DES
- 仿IOS弹出框及提示框(含Demo)
- IOS成长之路-DES+Base64 加密、解密
- IOS成长之路-DES+Base64 加密、解密
- 择一城终老,遇一人白首
- composer的下载和安装
- 【DeepDive】应用构建
- 2017全球技术领导力峰会(GTLC)专题介绍
- PowerOJ1646(BFS+剪枝)
- iOS之Des加密(含资源及Demo)
- Linux基础(1):常见操作和基本命令
- VS2013 播放声音小程序~
- 2014年第五届蓝桥杯C/C++程序设计本科B组省赛 李白打酒(结果填空)
- CCF 交通规划 201609-4(dijkstra)
- Linux基础知识
- 网络流24题之T14 孤岛营救问题
- 设计模式之单例模式
- 文章标题