Go package wincred 在将密码从 []byte 转换为字符串时添加空格

Go package wincred adding spaces when converting password from []byte to string

我正在使用 Windows 凭据管理器为我内置的应用程序存储数据库凭据通过 wincred package

它适用于检索由包本身创建的凭据的密码,但是对于直接通过 Windows 凭据管理器创建的凭据,包在字符之间添加 "spaces"(字节“0”)当从 []byte 转换为 string.

//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]

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

返回的结果类似于UTF-16

wincred 的 UTF-16 转换工作正常吗?很高兴与作者确认。

作为一种变通方法,我删除了暂时适合我的目的的空字节,但这不太可能是正确的解决方案。

bytes.Replace(myBytes, []byte("[=10=]0"), nil, -1)