对MD5算法简要的叙述:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
信息摘要:把明文内容按某种规则生成一段哈希值,即使明文消息只改动了一点点,生成的结果也会完全不同。
MD5(Message-digest algorithm 5)就是信息摘要的一种实现,它可以从任意长度的明文字符串生成128位的哈希值。
【转载】漫画趣解MD5算法
摘要哈希生成的正确姿势是什么样呢?分三步:
1.收集相关业务参数,在这里是金额和目标账户。当然,实际应用中的参数肯定比这多得多,这里只是做了简化。
2.按照规则,把参数名和参数值拼接成一个字符串,同时把给定的密钥也拼接起来。之所以需要密钥,是因为攻击者也可能获知拼接规则。
3.利用MD5算法,从原文生成哈希值。MD5生成的哈希值是 128 位的二进制数,也就是 32 位的十六进制数。
第三方支付平台如何验证请求的签名?同样分三步:
- 发送方和请求方约定相同的字符串拼接规则,约定相同的密钥。
- 第三方平台接到支付请求,按规则拼接业务参数和密钥,利用 MD5 算法生成 Sign。
- 用第三方平台自己生成的 Sign 和请求发送过来的 Sign 做对比,如果两个 Sign 值一模一样,则签名无误,如果两个 Sign 值不同,则信息做了篡改。这个过程叫做验签。