2016-05-05 3 views
2

Я работаю над созданием основного хранителя паролей в Голанге и хочу иметь возможность хранить пароли, зашифрованные с помощью RSA. Мои функции шифрования и дешифрования работают и будут шифроваться и дешифровать правильно. Однако после сохранения пароля в файле и последующего чтения пароля из файла функция дешифрования не работает. Я проверил, чтобы убедиться, что чтение ключа RSA верное, и это не моя проблема, так как чтение в RSA-ключ работает правильно. Вот как я пишу мой зашифрованный пароль в файлЧтение из файла

ioutil.WriteFile(filename, encPassword, 0644) 

и вот как я читаю обратно пароль

encrypted, err = ioutil.ReadFile(encryptedFileName) 

Когда я запускаю свою программу, я в настоящее время получаю этот код ошибки

failed in decrypt_oaep: crypto/rsa: decryption error 
exit status 1 

Я убежден, что чтение или запись файла добавляет что-то к содержимому файла, потому что если я попытаюсь расшифровать пароль до того, как зашифрованный пароль будет написан десять или прочитать из файла, он будет работать нормально. Любая помощь будет оценена по достоинству.

Если вам нужно больше кода, я могу опубликовать его позже.

Edit: Вот ссылка на код-шер со всем моим кодом: https://codeshare.io/PtMxk

+0

Чтение и запись в файлы не изменят данные. Вы можете легко протестировать это, написав и прочитав буфер в памяти. (также, пожалуйста, правильно отформатируйте свой код) – JimB

ответ

3

В строке 167 вы вызываете вашу функцию шифровать с label = []byte(product).

В строке 120 вы вызываете вашу функцию дешифрования с label переменной, которая была определена, но не инициализируется (т.е. вы отправляете пустой массив)

decrypted = decrypt_oaep(private_key, encrypted, label) 

Из-за этого, ваша расшифровка не будет Работа. Из документов:

Параметр Метка должна соответствовать значению заданного при шифровании - https://golang.org/pkg/crypto/rsa/#DecryptOAEP

Решение: В дешифрования вызова (строка 120) отправить []byte(product) в качестве параметра метки.