原由是 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出来的值最有一位参与了后面的计算过程网站