haitao:
我在这里使用md5只是为了验证加密密钥是否正确
[阅读: 984] 2008-08-19 16:00:02
我在这里使用md5只是为了验证加密密钥是否正确
如果解密出来的结果是正确的,则结果的前2个域必须满足预先的定义:后者是前者的md5值
因为这个随机数不是验证者提供的,验证者本来不知道这个数,没法从解密出来的结果中的随机数来判断收到的密文是不是就是对方用对应的密钥加密的
当然,验证办法有很多,更简单的可以固定明文的格式,如前4个字节必须是0x123456,只要解密出来的结果前4个字节符合,也可以认为对方的加密密钥是正确的
严格的认证机制是:认证者给一个随机数,要求被认证者加密。而且这个过程互相进行一次
现在是web服务器的方式下,因为交互一次均需要一次tcp通讯,可能比较慢,4次交互会出现一个较长时间的等待
所以考虑单方认证,而且不用认证者(服务器)给出随机数,则只要1次交互。
我绕开认证者(服务器)给出随机数这个交互,使得破解者可以截取一次正确的交互应答结果(密文),以后都使用它来骗服务器
所以,需要加上时间信息来杜绝破解者重复使用截取一次正确的交互应答结果
还有一种做法,就是服务器保存这个随机数,下次再遇到,直接拒绝(认为它是破解者重复使用截取一次正确的交互应答结果)
——这样的讨论至少有价值了