不获取密钥,MD5是不可逆的算法。
两边配置密钥,直接对比两侧MD5结果(对端的包含在报文里),相同则验证成功
MD5是哈希算法,也就是 从明文A到密文B很容易,但是从密文B到明文A几乎不可能
也就是说,给你密文,是几乎无法通过解密来得到明文的。
这个一般用于存储密码。也就是数据库里存的是密文,管理员只能看到密文,而看不到明文。
解密过程:通过不断尝试密码字典,使用MD5计算得到密码,然后比对密文是否一致,如果一致,则说明该密文的明文是当前尝试的密码
所以,密码的保护是及其重要的,不管使用什么加密算法,都要保护好密码——为保护好密码,密码本身也要设置得复杂一些。
是md5,它是一种签名算法,MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
在很多时候在跟第三方做数据交互的时候,对方都会提供给我们签名密钥signKey,并且要求我们传入签名
这种做法非常普遍和经典,现在记录一下该做法的流程和意义
以金融支付第三方为例,一般我们和它交互的时候信息安全系数较高(不能被篡改),会有以下操作
我方应用 :
1.传输中加上一个签名sign:签名是由传输参数按照第三方指定规则排列之后进行md5算法生成的128位的hash值(为了保险起见,会加上一个由第三方提供signKey一起md5)
第三方:
1.根据应用方提供的参数在第三方根据约定的规则生成签名
2.和应用方提供的签名sign对比
3.签名正确再走下一步,否则验签失败
signKey : 必需,因为大多数时候都是采用md5做签名算法,所以如果没有约定的signKey很容易被篡改信息
md5 : 经典的信息摘要算法(注意:它不是加密算法,不可逆),基本用于信息签名
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。
2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。
MD5相对MD4所作的改进:
1、增加了第四轮。
2、每一步均有唯一的加法常数。
3、减弱第二轮中函数的对称性。
4、第一步加上了上一步的结果,这将引起更快的雪崩效应(就是对明文或者密钥改变 1bit 都会引起密文的巨大不同)。
5、改变了第二轮和第三轮中访问消息子分组的次序,使其更不相似。
6、近似优化了每一轮中的循环左移位移量以实现更快的雪崩效应,各轮的位移量互不相同。