广州英铭网站建设,WordPress表单支付插件,一家只做卫生巾的网站,wordpress ueditor 教程文章目录 仓库地址介绍安装用法SHA512HMACBcryptScryptAESRSAECC 仓库地址
仓库地址#xff1a;https://github.com/palp1tate/go-crypto-guard
欢迎star和fork#xff01;
介绍
此存储库包含用 Go 编写的全面的密码哈希库。该库支持多种哈希算法#xff0c;它允许可定制… 文章目录 仓库地址介绍安装用法SHA512HMACBcryptScryptAESRSAECC 仓库地址
仓库地址https://github.com/palp1tate/go-crypto-guard
欢迎star和fork
介绍
此存储库包含用 Go 编写的全面的密码哈希库。该库支持多种哈希算法它允许可定制的盐长度、迭代、键长度和算法选择。这个开源项目旨在为开发人员提供一个多功能的工具用于安全的密码存储和验证。
支持的算法:
SHA512SHA384SHA256SHA1Md5HMACArgon2BcryptScryptBlake2bBlake2sAESDES3DESRSARC4BlowfishECC
一些加密过后的密码格式与Django内置的加密算法格式相同:
algorithm$iterations$salt$hash其他可能的格式:
algorithm$hash安装
go get -u github.com/palp1tate/go-crypto-guard 用法
SHA512
// SHA512 使用 PBKDF2 和 SHA-512 对密码进行加密。
// 它接受密码、盐长度、密钥长度和迭代次数作为输入。如果你传入一个无效的值函数将采取默认值。
// 它生成一个盐使用 PBKDF2 和 SHA-512 派生一个密钥并返回加密的密码。
// 密码的格式algorithm$iterations$salt$hash
//pbkdf2_sha512$100$40fde046f66c1d9e55b4435d$1fdd34c50a98e576b612d66be507f019password : 12345678
encodedPassword, _ : pwd.GenSHA512(password, 12, 16, 100)
ok, _ : pwd.VerifySHA512(password, encodedPassword)SHA384、 SHA256、 SHA1、 Md5和 Argon2的用法与 SHA512相同.
HMAC
// HMAC 使用 HMAC 和 SHA-256 对密码进行加密。
// 它接受密码和盐长度作为输入。
// 它生成一个盐使用盐和 SHA-256 计算密码的 HMAC并返回加密的密码。
// 密码的格式algorithm$salt$hash
//hmac$3bf4e2c1a9ed54575d0d1f937eb363ab$a6ed73f8fe48867db2bd58c69ebe6c0fb91ecdd8147c4352fecf018d07cb4f43password : 12345678
encodedPassword, _ : pwd.GenHMAC(password, 16)
ok, _ : pwd.VerifyHMAC(password, encodedPassword)Bcrypt
// Bcrypt 使用 Bcrypt 哈希函数对密码进行加密。
// 它接受一个密码作为输入使用 Bcrypt 的默认成本从密码生成一个哈希并返回加密的密码。
// 密码的格式algorithm$hash
//bcrypt$243261243130246769545174546869684f565835616a694a4e3578432e6e387a4c426451526932692e443067756758334a436d3532717365784e5661password : 12345678
encodedPassword, _ : pwd.GenBcrypt(password)
ok, _ : pwd.VerifyBcrypt(password, encodedPassword)对 Blake2b、 Blake2s 的使用与对 Bcrypt 的使用相同.
Scrypt
// Scrypt 使用 Scrypt 密钥派生函数对密码进行加密。
// 它接受一个密码、盐长度和密钥长度作为输入。
// 它生成一个盐使用 Scrypt 和提供的参数派生一个密钥并返回加密的密码。
// 密码的格式algorithm$salt$hash
//scrypt$679a0a3c8336a9ff36b809862e7d494c$c4cec5ca742fa984045457f76d217acf245f032251c6a3952c4d68e1cba4a488password : 12345678
encodedPassword, _ : pwd.GenScrypt(password, 16, 32)
ok, _ : pwd.VerifyScrypt(password, encodedPassword)AES
// AES 使用 AES 加密算法对密码进行加密。
// 它接受一个密码和一个 AES 密钥作为输入。
// 它从 AES 密钥创建一个新的密码块对密码应用 PKCS7 填充并使用 CBC 模式加密密码。它返回加密的密码。
// 密码的格式algorithm$hash
// aes$BhV9oJiePwpsEwDWizJoCApassword : 12345678
//aes key的长度必须为32
aesKey : palpitateabcdefghijklmn123456789
encodedPassword, _ : pwd.GenAES(password, aesKey)
ok, _ : pwd.VerifyAES(password, encodedPassword, aesKey)DES、ThreeDES、RC4和Blowfish的使用与Bcrypt相同对于DESdesKey的长度必须为8。对于ThreeDESthreeDesKey的长度必须为24。rc4Key和BlowfishKey的长度没有限制但对于Blowfish密码的长度必须为8。
RSA
// GenRSAKey 生成一对 RSA 密钥并将它们保存到文件中。
// 它接受密钥的位数作为输入。推荐使用 2048 或 4096。
// 它生成一个私钥和一个公钥并分别将它们写入 “privateKey.pem” 和 “publicKey.pem”。// RSA 使用 RSA 加密算法对密码进行加密。
// 它接受一个密码和公钥文件的路径作为输入。
// 它从文件中读取公钥使用 RSA 和 PKCS1v15 填充对密码进行加密并返回加密的密码。
// 密码的格式algorithm$hash
//rsa$3p1X80iFIDtwtKOQFjXmdeyvcxkEIbpXuwXcqbcCvean6zyWvcrogQtDj2MkYOE2ScHpARR93RYxs3yRXetKAHhrDqWURYcyJwuTwShBmR4hz3WkFzhqm44IgPdlgdt70uO7TXx6fj1WmUTsZpNDTF/WNdEUO7Rzc8wahYBcnMOnPgUXrnUCYRSX7OBjuLwThnd9FTgh8CdaqESHWh6UPgkj9xz3G2uRplx2Tae0Pbsk8vQTuJXsqT//Q8yoCELo5S6wTE6H8AMBdgvJgNHzFDldQD8UsZ7Ta/u2uF/joHwBA6V6IS41ithspE9ceJZCBWo2Cj6fMIbvjg// 在你可以加密密码之前你必须先生成一对密钥。这个函数只能被调用一次记住在验证密码时需要相同的密钥对。_ pwd.GenRSAKey(2048) //只需要执行一次就可以注释掉
password : 12345678
encodedPassword, _ : pwd.GenRSA(password, publicKey.pem)
ok, _ : pwd.VerifyRSA(password, encodedPassword, privateKey.pem)ECC
// ECC 使用 ECC 加密算法对密码进行加密。
// 它接受一个密码和一个私钥作为输入。
// 它计算密码的 SHA-256 摘要使用私钥对摘要进行签名并返回加密的密码。
// 密码的格式algorithm$hash
//ecc$BQOoQvBhRHKi9GsV0qpPiyMJ5hRwdiXlQL7CcMsPCo1GvIomtb8xzjNnmq7RNRWmS9AKXoi0Cg4fmAdLeCN8wpassword : 12345678
privateKey, _ : ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
encodedPassword, _ : pwd.GenECC(password, privateKey)
publicKey : privateKey.PublicKey
ok, _ : pwd.VerifyECC(password, encodedPassword publicKey)