OC 加密
//MD5加密的结果为128位的二进制数.
//所以有128 / 8 = 16字节(8位一个字节).
//每八位表示两个16进制数.
//MD5 有32个16进制数.
//语言层次的所有摘要算法步骤类似,只有加密结果的数组长度不一样.
需要导入框架: #import <CommonCrypto/CommonCrypto.h>
C语言实现加密过程:
//明文
char *str = "I LOVE iOS";
//系统定义了一个相对应加密结果的长度(字节数).我们在使用摘要算法时,只要使用对应的宏就可以,不需要记忆.
unsigned char result[16] ;//创建存放MD5结果的数组
//开始加密过程
CC_MD5_CTX md5;
//初始化
CC_MD5_Init(&md5);
//更新加密参数
//第一个参数:MD5加密主题 第二个参数:需要机密的内容 第三个参数:要加密的长度
CC_MD5_Update(&md5, str, (CC_LONG)strlen(str));
//结束加密
CC_MD5_Final(result, &md5);
//打印机密结果
for (int i = 0; i < 16; i++) {
printf("%02x",result[i]);
}
printf("\n");
//系统提供MD5加密实现原理
void AG_MD5(const void *data,CC_LONG len,unsigned char *md);
void AG_MD5(const void *data,CC_LONG len,unsigned char *md){
CC_MD5_CTX md5;
CC_MD5_Init(&md5);
CC_MD5_Update(&md5, data, len);
CC_MD5_Final(md, &md5);
}
实现OC字符串对象加密
NSString *str1 = @"岁月微凉人好,回忆袭身日渐长"; //明文
const char *strChar = [str1 cStringUsingEncoding:NSUTF8StringEncoding];//将字符串转化为函数所需类型
unsigned char result[CC_MD2_DIGEST_LENGTH];//接受结果数组
//加密
CC_MD5(strChar, (CC_LONG)str1.length, result);
NSMutableString *resultString = [[NSMutableString alloc] initWithCapacity:CC_MD5_DIGEST_LENGTH];
for (int i= 0; i < CC_MD2_DIGEST_LENGTH; i++) {
//将加密结果的数组以16进制数的形式拼接到可变字符串上
[resultString appendFormat:@"%02x",result[i]];
}
NSLog(@"%@",resultString);
对文件加密与对字符串加密相同,将文件转化为二进制流(NSData)进行加密,即可.
OC 加密的更多相关文章
- 24 (OC)* 加密
一 .MD5加密 MD5加密是最常用的加密方法之一,是从一段字符串中通过相应特征生成一段32位的数字字母混合码. MD5主要特点是 不可逆,相同数据的MD5值肯定一样,不同数据的MD5值不一样(也不是 ...
- OC的DES加密,使与java的Cipher类用DES/CBC/PKCS5Padding方式的加密结果同样
问题说明: 近期用到DES加密,而且要与java的Cipher类加密的结果保持一致.没研究过java的Cliper,但工作中Cipher依据DES/CBC/PKCS5Padding加密方式生成了一个字 ...
- oc ios 中文字符串 进行 sha1加密 错误?
我在网上找到了一个oc版加密的工具类,但是加密中文就出现大问题 const char *cstr = [self cStringUsingEncoding:encoding]; NSData *dat ...
- sm4加密 解密(oc)
前几天项目用到sm4加密解密,加密为十六进制字符串,再将十六进制字符串解密.网上百度了下,sm4是密钥长度和加密明文加密密文都为16个字节十六进制数据,网上的sm4 c语言算法很容易搜到,笔者刚开始没 ...
- IOS开发-OC学习-MD5加密
MD5的全称是Message-Digest Algorithm 5. MD5加密算法为现在应用最广泛的哈希算法之一,该算法广泛应用于互联网网站的用户文件加密,能够将用户密码加密为128位的长整数.数据 ...
- RSA非对称加密,使用OpenSSL生成证书,iOS加密,java解密
最近换了一份工作,工作了大概一个多月了吧.差不多得有两个月没有更新博客了吧.在新公司自己写了一个iOS的比较通用的可以架构一个中型应用的不算是框架的一个结构,并已经投入使用.哈哈 说说文章标题的相关的 ...
- (iOS)Base64加密和DES加密、以及JAVA和iOS中DES加密统一性问题
我们在项目中为了安全方面的考虑,通常情况下会选择一种加密方式对需要安全性的文本进行加密,而Base64加密和DES64加密是常用的加密算法.我记得我在前一个项目中使用的就是这两种加密算法的结合:Bas ...
- 使用BCrypt算法加密存储登录密码用法及好处
//导入import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; /** *使用BCrypt算法加密存储登录密码 ...
- iOS RSA加密解密及签名验证
1.首先要下载openssl,这个不用说,直接官网下载或者用brew install openssl下载 2.终端生成私钥密钥 2.1生成私钥 openssl genrsa - 2.2生成密钥 ope ...
随机推荐
- 出现,视图必须派生自 WebViewPage 或 WebViewPage错误解决方法
遇到这种问题是因为我新建了Areas,在Areas里面建Controllers,Models,Views.所以在View文件夹下面湿没有Web.config文件的. 解决方法:(复制views中的we ...
- HttpURLConnection&HttpClient网络通信
一:HttpURLConnection简介: 用于发送或者接受HTTP协议请求的类,获得的数据可以是任意类型和长度,这个类可以用于发送和接收流数据,其长度事先不知道. 使用这个类遵循一下模式: 获得一 ...
- ZOJ 3872 Beauty of Array (The 12th Zhejiang Provincial Collegiate Programming Contest )
对于没有题目积累和clever mind的我来说,想解这道题还是非常困难的,也根本没有想到用dp. from: http://blog.csdn.net/u013050857/article/deta ...
- C# 线程传参
传参方式有两种: 1.创建带参构造方法类 传参 2.利用Thread.start(8)直接传参,该方法会接收一个对象,并将该对象传递给线程,因此在线程中启动的方法 必须接收object类型的单个参数. ...
- UI2_UINavigationBar
// // AppDelegate.m // UI2_UINavigationBar // // Created by zhangxueming on 15/7/6. // Copyright (c) ...
- (转)对DotNet分布式应用搭建的考虑
设计前的考虑和准备工作 1 对业务需求的理解重要性远远胜于对技术架构的理解 2 架构包含技术架构和业务架构 3 没有万能和通用的架构,只有符合自身业务需求的架构 4 架构本身的复杂性要截至在架构设计阶 ...
- 微信公众号与HTML 5混合模式揭秘1——如何部署JSSDK
本文是连载JSSDK+H5的书,这里是第一篇揭秘————如何部署JSSDK 部署JSSDK不会太难,有时候需要一点后台知识,但也不是太难的那种,本节主要是用PHP作为后台参考语言,为了照顾初学者,把代 ...
- CP30 ---DataSource连接池的创建过程
1.参看CP30文档quickStart 如下具体创建步骤 public DataSource getDs() throws Exception { //创建连接池对象 ComboPooledData ...
- unity基本操作二
一:error1,先断网再启动点击Manual Activation点击Save License生成相应的alf文件2,联网打开https://license.unity3d.com/manual上传 ...
- Repost: Set Delivery Block on SO
If SO is incomplete, then automatically set the delivery block on the SO header. as suggested by ear ...