针对CSDN等各大网站私自保存密码的问题, 尝试用Go语言 写了个密码生成工具.

pwdgen 是 password generator 的缩写, 支持生成KeePass格式.

下面是生成算法和实现的代码:

// base58(sha512(md5hex(encrypt_key+encrypt_salt)+site_id+site_salt)[0:16]
func pwdgen(site_id, site_salt, encrypt_key, encrypt_salt string) string {
    md5 := md5.New()
    md5.Write([]byte(encrypt_key + encrypt_salt))
    md5Hex := fmt.Sprintf("%x", md5.Sum(nil))

    sha := sha512.New()
    sha.Write([]byte(md5Hex + site_id + site_salt))
    shaSum := sha.Sum(nil)

    pwd := base58.EncodeBase58(shaSum)[0:16]
    return string(pwd)
}

完整的程序请访问: https://bitbucket.org/chai2010/pwdgen/wiki/Home

在线文档请访问: