关于数字签名想到的

今天和同事讨论到一个关于数字签名算法的问题。咱们经过修改数字签名的文件的内容,验证数字签名的有效性。发现的现象是只要文件的内容相同,不管中间过程当中被修改过多少次,它们的数字签名都有效。算法

打开被数字签名过的JS文件,发现文件的末尾有一段固定长度的字符串,这个固定长度字符串就是数字签名的验证文件。咱们猜测它是这样进行验证的,一段内容(即咱们文件的内容,不管内容多长),通过一个加密算法之后,都会生成一段固定长度的字符。若是在查看数字签名时,由文件内容再次根据此算法生成的字符串与文件数字签名时获得的字符串彻底匹配,那证实这个文件自数字签名以来没有被改动过,即该数字签名有效。不然无效。数据库

幸运的是这样的一个加密算法是不能逆向的,就是你没法从一个固定长度的字符串反推出文件的内容。可是也有人证实了这种算法的缺陷,那就是必定存在内容不一样的两个文件,经过这个算法所获得的固定长度字符串相同。但这样的两个文件是没法预知的,便可遇不可求。从必定角度出发看,数字签名还算是安全的。安全

就是这种不能逆向的加密算法,为网站存储用户密码提供了一个好方案。每次用户登陆时,网站将用户本次输入的密码经过这样的加密算法生成一个字符串,而后拿这个生成的字符串和先前用户设置密码时生成并存放在数据库中的字符串匹配,若是彻底匹配,则大概可说是本用户。若是各大网站是采用相似算法来加密用户的密码的,那就不再用担忧用户的秘密被内部泄露了。网站

相关文章
相关标签/搜索