iOS之数据加密
来源:互联网 发布:唱歌培训软件 编辑:程序博客网 时间:2024/05/01 15:53
常用术语
- 密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数.(密钥分为对称密钥和非对称密钥,也可以根据途径分为加密密钥和解密密钥)
- 明文:没有进行加密,能够直接代表原文含义的信息
- 密文:经过加密处理之后,隐藏原文含义的信息
- 加密:将明文转换成密文的实施过程
- 解密:将密文转换成明文的实施过程
数据安全
- 数据安全:是一种主动的包含措施,数据本身的安全必须基于可靠的加密算法与安全体系,主要是对对称算法与公开密匙密码体系两种(非对称算法),都包含了数据的加密和解密过程
- 对称算法:对称密码算法有时又叫传统密码算法,是指加密密钥可以从解密密钥中推算出来,反过来也成立
- 非对称算法:对是指加密密钥可以从解密密钥中推算出来,反过来不能成立
- 加密算法有很多种,在iOS开发中,常用的有得MD5和base64等等
MD5
- MD5 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)
- 应用场景:登陆界面,签名,时间戳等
MD5算法具有以下几个提点:
- 压缩性:任意长度的数据,算出的MD5长度都是固定的(16进制,32位)
- 容易计算:从源数据计算出MD5值很容易
- 抗修改性:对源数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别
- 强抗碰撞:已知源数据和其MD5值,想找到一个具有相同MD5值得数据(即伪造数据)是非常困难的
- 不可逆性的
- 具体实现过程:
MD5加密字符串
+ (NSString*)md5String:(NSString*)sourceString { //由于md5加密都是通过c级别的函数来计算,所以需要将加密的字符串转换为c语言字符串 //1.获取c字符串 const char *cStr = sourceString.UTF8String; //2.创建一个C语言字符串数组,用来接收加密结束之后的字符串(接收MD5值) //一个字节是8位,两个字节是16位,两个字符可以表示一个16位进制的数,MD5结果为32,实际上由16位16进制数组成 unsigned char result[CC_MD5_DIGEST_LENGTH]; //3.计算MD5值(结果存储在result数组中) /* 第一个参数:需要加密的字符串 第二个参数:需要加密的字符串的长度 第三个参数:加密完成之后字符串存储的地方 */ CC_MD5(cStr, (CC_LONG)strlen(cStr), result); //4.将加密完成的字符拼接起来使用(16进制) //声明一个可变字符串类型,用来拼接转换好的字符 NSMutableString *resultStr = [[NSMutableString alloc] initWithCapacity:CC_MD5_DIGEST_LENGTH]; for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) { [resultStr appendFormat:@"%02x",result[i]]; } NSLog(@"%@",resultStr); return resultStr;}
md5对data类型数据加密
+ (NSString*)md5Data:(NSData*)sourceData { //需要MD5变量并且初始化 CC_MD5_CTX md5; CC_MD5_Init(&md5); //开始MD5加密 /* 第一个参数:对MD5变量取地址(要为改变指向的内存空间存储计算好的数据) 第二个参数:需要计算的源数据 第三个参数:源数据的长度 */ CC_MD5_Update(&md5, sourceData.bytes, (CC_LONG)sourceData.length); //结束MD5加密(声明一个无符号的字符数组,用来盛放转换好的数据) unsigned char result[CC_MD5_DIGEST_LENGTH]; //将数据放入result数组 CC_MD5_Final(result, &md5); //获取结果(将result中的字符拼接为OC语言中的字符串,以使我们使用) NSMutableString *resultStr = [[NSMutableString alloc] initWithCapacity:CC_MD5_DIGEST_LENGTH]; for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) { [resultStr appendFormat:@"%02x",result[i]]; } NSLog(@"%@",resultStr); return resultStr;}
base64
- 使用场景:数据(比如网易新闻,资讯类的信息)
base64加密
+ (NSString*)base64EncoderWithData:(NSData*)sourceData { if(!sourceData) {//如果需要加密的数据为nil,不进行加密,直接返回 return nil; } NSString *resultStr = [sourceData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];// [sourceData base64EncodedDataWithOptions:NSDataBase64Encoding64CharacterLineLength];返回的是NSData类型 return resultStr;}
base64解密(对于字符串)
+ (id)base64EncoderWithString:(NSString*)sourceString { if (!sourceString) { return nil; } //解密 NSData *resultData = [[NSData alloc] initWithBase64EncodedString:sourceString options:NSDataBase64DecodingIgnoreUnknownCharacters]; return resultData;}
0 0
- iOS之数据加密
- iOS学习之数据加密
- iOS开发-数据安全之加密
- iOS 数据加密MD5
- ios 数据加密
- iOS数据加密
- iOS开发之AES+Base64数据混合加密与解密
- iOS开发之 AES+Base64数据混合加密与解密
- java、android、ios、js数据传递加密算法之AES加密
- IOS之MD5加密
- iOS之MD5加密
- iOS之MD5加密
- iOS之安全加密
- IOS加密api数据接口
- ios- POST数据加密-安全
- iOS数据安全-md5加密
- 数据加密技术之MD5加密
- Android数据加密之Des加密
- Memcache-Java-Client-Release源码阅读(之六)
- Digital ocean优惠
- java底层知识(6)--CPU、内存
- PAT-B 1037. 在霍格沃茨找零钱
- 木化html
- iOS之数据加密
- HDU 2163 Palindromes
- iOS开发之原生二维码生成
- Liberty nova-api load app过程跟踪
- 第10周项目一-点-圆-圆柱类的设计(1)
- 窗体的使用
- 欢迎使用CSDN-markdown编辑器
- 一步步分析百度音乐的播放地址,利用Python爬虫批量下载
- 将按钮添加到窗体