Идет пакет с добавлением пробелов при преобразовании пароля из байта [] в строку - PullRequest
0 голосов
/ 25 июня 2018

Я использую Диспетчер учетных данных Windows для хранения учетных данных базы данных для моего приложения, встроенного в Go с помощью 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

Представление байта []:

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

Мне интересно, есть ли у кого-нибудь представление о том, что может быть причиной этой проблемы.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

В качестве обходного пути я удаляю нулевые байты, которые пока работают для моих целей, но вряд ли это будет правильным решением.

bytes.Replace(myBytes, []byte("\000"), nil, -1)
0 голосов
/ 26 июня 2018

Возвращенный результат выглядит как UTF-16 .

Правильно ли работает преобразование wincred в UTF-16? Рад уточнить у авторов.

...