常用的签名算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用的签名算法相关的知识,希望对你有一定的参考价值。
参考技术A 写在前面:加密和签名是两回事,加密的目的是防止信息泄露,签名的目的是防止篡改和伪造MD5、SHA-1、SHA-256、HMAC-SHA256等属于哈希算法,计算数字摘要,不可逆,有碰撞
DES、AES、RSA等属于加密算法,对数据进行加解密,可逆
MD5签名通常先按照一定规则排列待签名数据,进行加盐(拼key),然后使用MD5摘要算法计算摘要,得到的散列值即为sign
MD5验签即按照相同的规则排列待签名数据,使用相同的key,然后使用MD5摘要算法计算摘要,对比自己得到的sign值和对方传过来的sign值是否相等
参考资料: MD5算法原理
MD5作为一种散列算法,虽然很难发生散列碰撞,但是仍然存在两种不同数据会发生碰撞
已知明文A,可以计算得到另一个明文B和A的MD5值相同,但是并不能保证B是一段有意义的文字
未知明文A,已知MD5值X,无法计算得到明文A
暴力枚举、字典法、彩虹表法(对字典表的优化)
参考资料: MD5破解方法
网上的这篇文章说的比较清楚: SHA1算法原理
SHA-1一般被应用于数字证书的签名哈希算法,或者RSA签名中的哈希算法
经过权威机构证实,sha1算法的不安全性越来越高,sha指纹造假成本越来越低,随即微软、谷歌等IT巨头相继发布弃用sha1哈希算法声明,第三方认证机构自2016年1月1日起,将全面停止签发SHA1算法的数字证书。
网上的这篇文章说的比较清楚: SHA256算法原理
SHA-1算法和SHA-256算法并不是近亲,SHA-256算法属于SHA-2算法。SHA-1是160位的哈希值,而SHA-2是组合值,有不同的位数,SHA-256就是256位的SHA-2。SHA-1算法和MD5算法都是由MD4算法导出,所以这俩是近亲。
顾名思义,慢哈希就是很慢,主要为了防止暴力破解。由于慢,通常都用在客户端或者对性能没什么要求的场景
业内通用的一般是MD5(MD5(password)+salt)或SHA256(SHA256(password)+salt)
客户端进行SHA256(password),并传输给服务端,服务端进行SHA256(SHA256(password)+salt)
慢
ps:小数据如果既要加密又要签名,可以直接使用RSA私钥加密整个数据,接收方公钥解密,不做签名
比如赠送代金券的接口,拿到一个真实请求以后重复调用。
解决方案:
以上是关于常用的签名算法的主要内容,如果未能解决你的问题,请参考以下文章