2

我正在使用 Windows 凭据管理器来存储我的应用程序的数据库凭据,这些凭据是通过wincred 包内置的。

它适用于检索由程序包本身创建的凭据的密码,但是对于直接通过 Windows 凭据管理器创建的凭据,程序包在从 [] 字节转换为字符串时在字符之间添加“空格”(字节“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

[]byte 表示是

[49 0 50 0 51 0 52 0 53 0 54 0]

我想知道是否有人对可能导致此问题的原因有任何想法。

4

2 回答 2

0

返回的结果看起来像UTF-16

的 UTF-16 转换是否wincred正常工作?很高兴与作者核实。

于 2018-06-26T09:34:45.630 回答
0

作为一种解决方法,我暂时删除了对我有用的空字节,但这不太可能是正确的解决方案。

bytes.Replace(myBytes, []byte("\000"), nil, -1)
于 2018-10-10T04:31:45.057 回答