美文网首页
数据和后台以及三方交互时,如何加密

数据和后台以及三方交互时,如何加密

作者: 西门丨不吹雪 | 来源:发表于2016-08-02 00:52 被阅读115次

MD5:加密算法有很多种,在iOS开发当中,MD5是我们常用的摘要算法

  • PS:哈希算法,哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。 哈希值是一段数据唯一且极其紧凑的数值表示形式。数据的哈希值可以检验数据的完整性。一般用于快速查找和加密算法。 典型的哈希算法有:MD2、MD4、MD5 和 SHA-1等。
    MD5:Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。
MD5算法具有以下特点:
  1. 压缩性:任意长度的数据,算出的MD5值长度都是固定的(16进制,32位)
  2. 容易计算:从原数据计算出MD5值很容易
  3. 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别
  4. 强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的
MD5加密的使用方式:首先,引入<CommonCrypto/CommonCrypto.h>

1)针对于字符串对象:

 //准备字符串
 NSString * foo = @"I love my iOS teacher";

//1.获取C字符串(MD5加密基于C语言实现,Foundation框架字符串需要转化)
const char * fooData = [foo UTF8String];//__strong const char *UTF8String,C语言无法持有字符串,必须用__strong修饰来拷贝内容

//2.创建字符串数组接收MD5值
//一个字节是8位,两个字节是16位,两个字符可以表示一个16位进制的数,MD5结果为32位,实际上由16位16进制数组成。
unsigned char resut[CC_MD5_DIGEST_LENGTH];

//3.计算MD5值(结果存储在result数组中)
CC_MD5(fooData, (CC_LONG)strlen(fooData), resut);

 //4.获取摘要值
NSMutableString *bar = [[NSMutableString alloc]initWithCapacity:CC_MD5_DIGEST_LENGTH];
for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i ++) {
[bar appendFormat:@"%02X",resut[i]];
}
NSLog(@"%@",bar);

2)针对于非字符串的其他类型:将其它对象转化为NSData对象(可以将对象事先写入文件),然后获取NSData对象的MD5值

//1.NSData对象获取: 获取文件路径,根据文件路径获取NSData对象
NSString *path = [[NSBundle mainBundle] pathForResource:@"一双人" ofType:@“mp3"];
NSData *data = [NSData dataWithContentsOfFile:path];

//2.创建MD5变量
CC_MD5_CTX md5;

//3.初始化MD5变量
CC_MD5_Init(&md5);

//4.准备MD5加密
CC_MD5_Update(&md5, data.bytes, (CC_LONG)data.length);

//5.结束MD5加密
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5_Final(result, &md5);

//6.获取结果
NSMutableString *resultString = [[NSMutableString alloc] initWithCapacity:CC_MD5_DIGEST_LENGTH];
for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i ++) {
[resultString appendFormat:@"%02X",result[i]];
}
NSLog(@"%@",resultString);

总的来说,哈希算法是一种摘要算法,主要作用是用来获取数据的摘要。严格意义上来说不属于加密算法(因为没有解密过程)。获取字符串的MD5值比较简单,其它对象可以先转化成NSData对象再进行操作。可以根据路径直接获取文件数据,也可以将对象写入文件件后获取为NSData对象。iOS同样支持SHA1、base64、AES、钥匙串等方式加密数据。

相关文章

  • 数据和后台以及三方交互时,如何加密

    MD5:加密算法有很多种,在iOS开发当中,MD5是我们常用的摘要算法 PS:哈希算法,哈希算法将任意长度的二进制...

  • iOS学习-数据加密

    在iOS端使用RSA加密的记录 一、需求: SDK开发,使用RSA加密和后台进行数据交互,后台是PHP要求:1、p...

  • iOS - 使用FMDB进行数据库加密

    开发过程中,有时候需要使用SQLite缓存很多用户信息或者用户记录,跟后台交互时,我们会把这些数据加密处理传给后台...

  • SpringMVC--初入SpringMVC

    后台人员主要处理数据库交互以及请求交互,即DAO层和Controller层,其中MyBatis是对应DAO层的框架...

  • 前后台加密数据AES的统一

    加密数据统一 一般前后台数据交互的时候需要进行数据加密参与的第一个项目服务器.iOS.android 采用 ae...

  • vue中的axios

    ajax:前端页面和后台数据做交互 把后台数据输出到前台

  • java.security 框架之签名、加密、摘要及证书

    和第三方系统对接时,需要对隐私数据进行加密,对请求报文进行签名等。加密算法分为单向加密、对称加密、非对称加密等,其...

  • springMVC+maven+mybatis+mysql入门

    (六)利用ajax和后台交互 这一小节,我们主要实现页面和后台简单的数据交互,初步掌握这个交互流程 页面主要采用a...

  • Swift4中使用Codable协议

    进行iOS开发时,与后台数据的交互格式通常是JSON,OC时代,有很多第三方可以完成JSON与Model的互转,都...

  • swift开发3DES加密

    项目中需要用到3DES加密,进行与后台的接口数据交互。因为加密传参的过程是,先将字典类型的参数转换为JSONstr...

网友评论

      本文标题:数据和后台以及三方交互时,如何加密

      本文链接:https://www.haomeiwen.com/subject/icdfsttx.html