我正在使用Windows凭据管理器存储通过wincred package构建的应用程序的数据库凭据。
它用于检索由程序包本身创建的凭据的密码,但是对于直接通过Windows Credential Manager创建的凭据,当从[] byte转换为字符串时,程序包在字符之间添加“空格”(字节“ 0”)
//Retrieve a credential object
package main
import (
"fmt"
"github.com/danieljoos/wincred"
)
func main() {
cred, err := wincred.GetGenericCredential("myGoApplication")
if err == nil {
fmt.Println(string(cred.CredentialBlob))
}
}
在上面的示例中,我已将“ myGoApplication”的密码设置为123456,但它的检索方式为
1 2 3 4 5 6
[]字节表示为
[49 0 50 0 51 0 52 0 53 0 54 0]
我想知道是否有人对导致此问题的原因有任何了解。
答案 0 :(得分:0)
返回的结果类似于UTF-16。
wincred
的UTF-16转换是否正常工作?很高兴与作者确认。
答案 1 :(得分:0)
作为一种解决方法,我暂时删除了对我而言有用的空字节,但这不太可能是正确的解决方案。
bytes.Replace(myBytes, []byte("\000"), nil, -1)