關於數字簽名想到的

今天和同事討論到一個關於數字簽名算法的問題。咱們經過修改數字簽名的文件的內容,驗證數字簽名的有效性。發現的現象是隻要文件的內容相同,不管中間過程當中被修改過多少次,它們的數字簽名都有效。算法

打開被數字簽名過的JS文件,發現文件的末尾有一段固定長度的字符串,這個固定長度字符串就是數字簽名的驗證文件。咱們猜測它是這樣進行驗證的,一段內容(即咱們文件的內容,不管內容多長),通過一個加密算法之後,都會生成一段固定長度的字符。若是在查看數字簽名時,由文件內容再次根據此算法生成的字符串與文件數字簽名時獲得的字符串徹底匹配,那證實這個文件自數字簽名以來沒有被改動過,即該數字簽名有效。不然無效。數據庫

幸運的是這樣的一個加密算法是不能逆向的,就是你沒法從一個固定長度的字符串反推出文件的內容。可是也有人證實了這種算法的缺陷,那就是必定存在內容不一樣的兩個文件,經過這個算法所獲得的固定長度字符串相同。但這樣的兩個文件是沒法預知的,便可遇不可求。從必定角度出發看,數字簽名還算是安全的。安全

就是這種不能逆向的加密算法,爲網站存儲用戶密碼提供了一個好方案。每次用戶登陸時,網站將用戶本次輸入的密碼經過這樣的加密算法生成一個字符串,而後拿這個生成的字符串和先前用戶設置密碼時生成並存放在數據庫中的字符串匹配,若是徹底匹配,則大概可說是本用戶。若是各大網站是採用相似算法來加密用戶的密碼的,那就不再用擔憂用戶的祕密被內部泄露了。網站

相關文章
相關標籤/搜索