起因是 csdn密码泄露事件
。那天晚上我彻夜未眠...把所有网站密码改了一通,不管是用了没用那个密码的都改...
然后就发现了一个噩梦...如果每个网站的密码都不一样,那记起来岂不是噩梦。于是把几个主要的网站密码改的不一样,其他网站都一样...另外把用到的安全邮箱都指向了很早之前注册的但经常不用的另外一个邮箱..
这个密码v1.0版本是2012年8月份形成的,之前主要用在蘑菇街/美丽说/返还网等密码中.说起来好简单..
ps:目前密码进化到v3版...万变不离其宗,变化的主要目的是不让那么随便猜出basepassword
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:
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出来的值最有一位参与了后面的计算过程
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。