原由是 csdn密碼泄露事件
。那天晚上我徹夜未眠...把全部網站密碼改了一通,無論是用了沒用那個密碼的都改...javascript
而後就發現了一個噩夢...若是每一個網站的密碼都不同,那記起來豈不是噩夢。因而把幾個主要的網站密碼改的不同,其餘網站都同樣...另外把用到的安全郵箱都指向了很早以前註冊的但常常不用的另一個郵箱..java
這個密碼v1.0版本是2012年8月份造成的,以前主要用在蘑菇街/美麗說/返還網等密碼中.提及來好簡單..安全
ps:目前密碼進化到v3版...萬變不離其宗,變化的主要目的是不讓那麼隨便猜出basepassword
app
var md5passwd = md5('[basepassword]'); var salt = md5password[1..n] #n = [1,3,5,7,9,13,17,19,23,29,31] var passwd = md5(salt+ '[email]' +'[domain]')[0..8]
example:dom
package main import ( "crypto/md5" "fmt" "io" ) func main() { var salt []byte domain := "www.mogujie.com" email := "123@mogujie.com" basepasswd := "123456" prim := []uint32{1, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31} h := md5.New() io.WriteString(h, basepasswd) md5basepasswd := fmt.Sprintf("%x", h.Sum(nil)) for _, v := range prim { salt = append(salt, md5basepasswd[v]) } hh := md5.New() io.WriteString(h, string(salt)) io.WriteString(h, email) io.WriteString(h, domain) md5str := fmt.Sprintf("%x", hh.Sum(nil)) fmt.Println(md5str[0:9]) // output:d41d8cd98 }
爲何使用md5
由於md5
出來的值恰好32
位,第32
位在程序語言中是31
..是一個質數
也就是說md5出來的值最有一位參與了後面的計算過程網站