iOS -- DES算法
算法步骤:
- #import "NSString+MFDES.h"
- #import <CommonCrypto/CommonCrypto.h>
- // key 必须8位
- #define key @"01234567"
- // 向量
- static Byte iv[] = {1, 2, 3, 4, 5, 6, 7, 8};
- @implementation NSString (MFDES)
- // 1. 字符串对称加密(DES)
- - (NSString *)stringWithDES{
- // 1. 将字符串本身转化为C字符串
- const char *string = [self UTF8String];
- // 2. 接收容器
- unsigned char byte[1024];
- // 3. 容器大小
- size_t dataOutMoved = 0;
- // 4. DES加密过程
- // 1. 参数1. 加密 或者 解密
- // 2. 参数2: 加密 / 解密 方式
- // 3. 参数3: 分组密码的选项
- // 4. 参数4: 秘钥
- // 5. 参数5: 秘钥的大小
- // 6. 参数6: 向量
- // 7. 参数7: c的字符串
- // 8. 参数8: 字符串的长度
- // 9. 参数9: 接收容器
- // 10. 参数10: 容器的大小
- // 11. 参数11: 容器最终的个数
- CCCryptorStatus cryptorStatus = CCCrypt(kCCEncrypt, kCCAlgorithmDES, kCCOptionPKCS7Padding, [key UTF8String], kCCKeySizeDES, iv, string, strlen(string), byte, 1024, &dataOutMoved);
- if (cryptorStatus == kCCSuccess) {
- // 转成字符串 ==== base64返回
- NSLog(@"加密成功");
- NSData *desData = [NSData dataWithBytes:byte length:dataOutMoved];
- NSString *desBaseString = [desData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
- return desBaseString;
- } else {
- NSLog(@"加密失败");
- }
- return @"";
- }
- // 2. 字符串对称解密(DES)
- - (NSString *)desWithString{
- NSData *base64Data = [[NSData alloc] initWithBase64EncodedString:self options:NSDataBase64DecodingIgnoreUnknownCharacters];
- const void *byte = base64Data.bytes;
- unsigned char buffer[1024];
- size_t dataOutMoved = 0;
- // C 语言方法
- CCCryptorStatus cryptorStatus = CCCrypt(kCCDecrypt, kCCAlgorithmDES, kCCOptionPKCS7Padding, [key UTF8String], kCCKeySizeDES, iv, byte, base64Data.length, buffer, 1024, &dataOutMoved);
- if (cryptorStatus == kCCSuccess) {
- NSLog(@"解密成功");
- NSData *desData = [NSData dataWithBytes:buffer length:dataOutMoved];
- NSString *desBaseString = [[NSString alloc] initWithData:desData encoding:NSUTF8StringEncoding];
- return desBaseString;
- } else {
- NSLog(@"解密失败");
- }
- return @"";
- }
iOS -- DES算法的更多相关文章
- 在IOS中使用DES算法对Sqlite数据库进行内容加密存储并读取解密
在IOS中使用DES算法对Sqlite 数据库进行内容加密存储并读取解密 涉及知识点: 1.DES加密算法: 2.OC对Sqlite数据库的读写: 3.IOS APP文件存储的两种方式及读取方式. 以 ...
- DES算法详解
本文主要介绍了DES算法的步骤,包括IP置换.密钥置换.E扩展置换.S盒代替.P盒置换和末置换. 1.DES算法简介 DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准. DES是一个分组 ...
- 基于DES算法加密的防撞库密码系统项目总结
项目内容:基于DES算法加密的防撞库密码系统 小组名:zqhzkzkj 目标:1.对用户输入的8位字符进行DES加密,要求用户输入8位密钥 2.对于不同的网站,不同的用户名生成不同的密码 小组成员:周 ...
- DES 算法的 C++ 与 JAVA 互相加解密
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- MFC 简单实现 DES 算法
前言 徐旭东老师说过学者就应该对知识抱有敬畏之心,所以我的博客的标题总喜欢加上"简单"二字,就是为了提醒自己,自己所学知识只是皮毛,离真理还远矣. DES 算法 DES算法是密码体 ...
- Asp.Net 常用工具类之加密——对称加密DES算法(2)
又到周末,下午博客园看了两篇文章,关于老跳和老赵的程序员生涯,不禁感叹漫漫程序路,何去何从兮! 转眼毕业的第三个年头,去过苏州,跑过上海,从一开始的凌云壮志,去年背起行囊默默回到了长沙准备买房,也想有 ...
- AES算法,DES算法,RSA算法JAVA实现
1 AES算法 1.1 算法描述 1.1.1 设计思想 Rijndael密码的设计力求满足以下3条标准: ① 抵抗所有已知的攻击. ② 在多个平台上速度快,编码紧凑. ③ 设计 ...
- 安全体系(一)—— DES算法详解
本文主要介绍了DES算法的步骤,包括IP置换.密钥置换.E扩展置换.S盒代替.P盒置换和末置换. 安全体系(零)—— 加解密算法.消息摘要.消息认证技术.数字签名与公钥证书 安全体系(二)——RSA算 ...
- DES算法原理完整版
1.所需参数 key:8个字节共64位的工作密钥 data:8个字节共64位的需要被加密或被解密的数据 mode:DES工作方式,加密或者解密 2.初始置换 DES算法使用64位的密钥key将64位的 ...
随机推荐
- Android SDK更新 Connection to http://dl-ssl.google.com refused
问题: Failed to fetch URL https://dl-ssl.google.com/android/repository/repository-6.xml, reason: Conne ...
- [How to]Cloudera manager 离线安装手册
2016-01-1910:54:05 增加kafka 1.简介 本文介绍在离线环境下安装Cloudera manager和简单使用方法 2.环境 OS:CentOS 6.7 Cloudera man ...
- Jquery和JS实现浏览器全屏
var fullscreen=function(){ elem=document.body; if(elem.webkitRequestFullScreen){ elem.webkitRequestF ...
- 小程序 image跟view标签上下会有空隙
解决方案 就是可以在image那里设置vertical-align:top/bottom/text-top/text-bottom 原因:图片文字等inline元素默许是跟父级元素的baseline对 ...
- CSAPP lab1 datalab-handout(深入了解计算机系统 实验一)
主要涉及计算机中数的表示法: (1)整数: two's complement,即补码表示法 假设用N位bit表示整数w: 其中最左边一位为符号位,符号位为0,表示正数,为1表示负数. (2)浮点数: ...
- eclipse+opencv
https://docs.opencv.org/2.4/doc/tutorials/introduction/linux_eclipse/linux_eclipse.html
- 稍微谈一下 javascript 开发中的 MVC 模式
随着前台开发日益受到重视,客户端代码比重日益增加的今天,如何在javascript开发里应用MVC模式,这个问题似乎会一直被提到,所以偶在这里粗略的谈一下自己的看法吧. MVC模式的基本理念,是通过把 ...
- [你必须知道的.NET]第二十八回:说说Name这回事儿
发布日期:2009.3.18 作者:Anytao © 2009 Anytao.com ,原创作品,转贴请注明作者和出处. 1 缘起 老赵在谈表达式树的缓存(2):由表达式树生成字符串中提到,在描述Ty ...
- python之md5模块
python的md5模块使用非常简单,包括以下几个函数: md5.new([arg]) 返回一个md5对象,如果给出参数,则相当于调用了update(arg) md5.updte(arg) 用stri ...
- HDU 6464.免费送气球-动态开点-权值线段树(序列中第first小至第second小的数值之和)(感觉就是只有一个状态的主席树) (“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛)
免费送气球 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ...