将密码从[] byte转换为字符串时,请在wincred软件包中添加空格

时间:2018-06-25 01:57:05

标签: go credentials credential-manager

我正在使用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]

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

2 个答案:

答案 0 :(得分:0)

返回的结果类似于UTF-16

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

答案 1 :(得分:0)

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

bytes.Replace(myBytes, []byte("\000"), nil, -1)