iOS-hash的应用

首先,何为hash?一般在iOS中hash应用于哪些方面?
hash,知道的人一般都会想到散列这个名词,它是通过一种算法,将任意长度的输入,转换成一个固定长度的输出。对于hash,有以下这些特点:

1、算法公开
2、相同的数据,每次得到的hash是相同的
3、对于不同数据,运算结果长度一样,比如MD5
4、无法逆运算
5、可以用作数据的“指纹”识别

hash的用途,在iOS中一般有以下一些地方:

1、用户的密码加密
2、搜索引擎
3、版权
4、数字签名

这里,重点讲一下用户密码加密和数字签名,一个APP用户注册登录的过程,就是一个用户密码加密和数字签名的很好的应用场景,先看下面两张图:


注册过程

可以看到,注册过程,就可以用数字签名,来很好的保证我们数据传输的安全性。数字签名的几大步骤:

1、一般我们先将数据有效的进行一个排序,保证服务端和客户端两边的数据排列的一致性,然后将客户端数据进行一个MD5算法运算。
2、将MD5之后的数据,一般是一个较小的固定数据,我们可以用公钥,进行一次RSA加密。
3、将RSA加密之后的密文,跟用户注册数据信息一起传递给服务端。
4、将客户端传过来的RSA加密之后的密文进行解密。
5、服务端先将用户注册数据信息用客户端一样的排序方式进行排序,然后MD5。将得到的MD5跟4步骤中解密之后的结果进行对比,对比一致则说明正确。
登录过程

而登录的过程,就是一个密码加密,一般我们会用HMAC,来完成这个密码加密的过程,因为原则上来说HMAC是一个算法原理,而不是一个算法,流程如下:

1 使用一个密钥加密,然后做两次hash散列。
2 把散列得到的hash值,加上从服务端得到的时间戳进行MD5。
3 将MD5之后的数据传递给服务端,服务端用同样密钥加数据库密码信息加密、散列,然后加上时间戳MD5进行比对。

在HMAC的过程中,有几个特点:

1、密钥是可以动态修改的,每次更换设备,用户重新登录时,可以换新的密钥进行加密
2、加上时间戳的验证,可以很好的避免每次发送数据的固定化,提高数据的安全性
3、完全可以做到,一个用户一个密钥,即使当前用户密钥丢失,也不会影响其他用户信息的安全性

以上就是hash的一些应用场景的描述,笔者也是大概说了一下使用场景的原理性知识,希望大家有不同意见,可以给与指导。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 介绍 数字签名、信息加密 是前后端开发都经常需要使用到的技术,应用场景包括了用户登入、交易、信息通讯、oau...
    luckyYU阅读 10,698评论 1 6
  • Hash 算法与数字摘要 Hash (哈希或散列)算法它能将任意长度的二进制明文串映射为较短的(通常是固定长度的)...
    你看我像豆子嘛阅读 1,245评论 0 2
  • 工作或者面试过程中我们总会接触到密码相关的技术和问题,本篇文章是我对近期阅读《图解密码技术》的总结,这本书很值得推...
    乐Coding阅读 1,480评论 0 5
  • 这里先简单介绍单向散列函数、消息摘要和哈希碰撞的的概念 单向散列函数: 将任意长度的信息转换为较短的固定长度的值,...
    坤_7a1e阅读 3,554评论 0 0
  • 前言 本文梳理主要基于书籍《Java加密与解密的艺术》、维基百科、百度百科以及网络上众多资料,如有涉及版权问题,请...
    hello_cyz阅读 2,185评论 1 7