iOS密码学-Hash

2021-08-23  本文已影响0人  沉淀纷飞

  日常开发中,我们经常会用到求某个数据的哈希值,对给服务器传一段数据时,会给该数据进行加密。那我们有没有想过什么是哈希(Hash),哈希是不是加密呢,哈希加密之间有什么关系呢?

哈希的定义

  Hash,字面意思就是散列,就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

哈希的特点

哈希的用途

HMAC加密方案

1、先通过RSA的加密方式先从服务端请求一个key,并保存到本地(最好放到钥匙串)
2、将key和密码按一定规则做拼接并求Hash
3、将上一步的Hash值拼接上当前时间戳再求Hash值,登陆的时候传递密码只需要传递此Hash值。因为服务端已经保存过了设置密码时保存的密码Hash值,服务端通过验证收到请求的上一分钟和此时的Hash值。

数字签名

1、原始数据进行Hash
2、使用RSA加密hash值(这部分数据就是数据的签名信息)
3、将数据+数字签名一起打包发送传递

上一篇下一篇

猜你喜欢

热点阅读