美文网首页
iOS密码学-Hash

iOS密码学-Hash

作者: 沉淀纷飞 | 来源:发表于2021-08-23 18:07 被阅读0次

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

哈希的定义

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

哈希的特点

  • 算法是公开的
  • 对相同数据运算,得到的结果是一样的
  • 对不同数据运算,如MD5得到的结果默认是128位,32个字符(16进制标识)
  • 哈希得到的结果,没法做逆运算
  • 哈希值也称为信息摘要,信息“指纹”,常用来做数据识别的

哈希的用途

  • 项目开发中我们经常用到对用户的密码求哈希值进行密码加密
  • 搜素引擎里面的数据检索也会用到哈希
  • 数据的版权信息也会用到哈希
  • 数字签名
      总结:Hash不是真正意义上的加密,它是一种散列碰撞的算法。对数据求哈希值,是可以通过一些网站反查询到的,所以与服务器传递密码,采用传Hash值的方式也不是很安全。那么如何才能真正的做到密码的传递绝对的安全呢?

HMAC加密方案

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

数字签名

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

相关文章

  • iOS密码学-Hash

      日常开发中,我们经常会用到求某个数据的哈希值,对给服务器传一段数据时,会给该数据进行加密。那我们有没有想过什么...

  • iOS逆向之App签名原理

    iOS App签名原理 在学习iOS签名之前,需要对密码学有一定的了解,比如RSA加密、HASH哈希函数参考:ht...

  • 区块链技术

    定义 BTC密码学原理 Hash z = hash(x) 哈希碰撞如果x != y,但hash(x) == has...

  • iOS逆向开发:密码学 HASH

    前言 最近看了一篇关于逆向实战的文章:来谈谈iOS逆向工程之App脱壳[https://juejin.cn/pos...

  • 【猫说系列】密码学

    【密码学】 1、对称加密 2、非对称加密3、DES 4、分组密码5、公钥密码学6、Hash7...

  • vue-router两种路由模式的区别

    hash 即地址栏 URL 中的 # 符号(此 hash 不是密码学里的散列运算)。比如这个 URL:http:/...

  • 区块链中的密码学之hash算法(一)

    前言 Hash算法我们可能早就听过,不仅仅应用在密码学领域。由于hash算法所体现的思想...

  • 2018-06-17

    Hyperledger Fabric的一些密码学常识 Hash 哈希(Hash)算法主要作用是将一段任意长度的数据...

  • 密码学系列之:碰撞抵御和碰撞攻击collision attack

    简介 hash是密码学和平时的程序中经常会用到的一个功能,如果hash算法设计的不好,会产生hash碰撞,甚至产生...

  • 碰撞攻击

    01 简介 hash是密码学和平时的程序中经常会用到的一个功能,如果hash算法设计的不好,会产生hash碰撞,甚...

网友评论

      本文标题:iOS密码学-Hash

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