Mac*_*ley 1 encryption postgresql utf-8 go
我在 go 中使用 crypto 来获取密码并使用密码短语来加密密码,然后将其作为字符串存储在 postgres sql 数据库中。加密工作正常,但是当我尝试将它添加到我的数据库时,我收到一个错误,似乎表明从 []byte 到 string 类型混淆了加密密码。
func Encrypt(password string, passphrase string) string {
data := []byte(password)
block, _ := aes.NewCipher([]byte(createHash(passphrase)))
gcm, err := cipher.NewGCM(block)
if err != nil {
panic(err.Error())
}
nonce := make([]byte, gcm.NonceSize())
if _, err = io.ReadFull(rand.Reader, nonce); err != nil {
panic(err.Error())
}
ciphertext := gcm.Seal(nonce, nonce, data, nil)
return string(ciphertext)
}
func createHash(key string) string {
hasher := md5.New()
hasher.Write([]byte(key))
return hex.EncodeToString(hasher.Sum(nil))
}
Run Code Online (Sandbox Code Playgroud)
当我运行此代码并尝试在数据库中添加行时,出现错误
ERROR #22021 invalid byte sequence for encoding "UTF8"
Run Code Online (Sandbox Code Playgroud)
我只是在寻找一种简单的方法来加密字符串密码并将加密的字符串保存到 postgres 的表中。表中的列是 VARCHAR 类型,但如果出于某种原因,我也愿意更改它。谢谢你的时间!
Base64 编码:
return base64.StdEncoding.EncodeToString(ciphertext)
Run Code Online (Sandbox Code Playgroud)
尽管字符串是字节数组,但并非所有字节序列都是有效的 UTF-8 字符串。Base64 编码通常用于将二进制数据存储为文本。
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |