我正致力于在Golang中创建一个基本密码管理器,并希望能够存储使用RSA加密的密码。我的加密功能和解密功能都可以正常工作并加密和解密。然而,在将密码存储在文件中然后从文件中读回密码之后,解密功能失败。我已经检查过以确保读取RSA密钥是正确的,这不是我的问题,因为RSA密钥中的读取正常工作。 以下是我将加密密码写入文件
的方法import 'dart:io';
void main() {
double base = 1, bnry = 0, remainder = 0, ans = 0, inp;
print("Please input binary number : ");
inp = stdin.readLineSync();
bnry = inp;
while(inp < 1){
remainder = inp % 10;
ans = ans + remainder * base;
base = base * 2;
inp = inp / 10;
}
print("$inp");
}
以下是我如何回读密码
ioutil.WriteFile(filename, encPassword, 0644)
当我运行程序时,我目前收到此错误代码
encrypted, err = ioutil.ReadFile(encryptedFileName)
我认为读取或写入文件正在向文件内容添加内容,因为如果我在编写加密密码或从文件中读取加密密码之前尝试解密密码,它将正常工作。任何帮助将不胜感激。
如果您需要更多代码,我可以稍后发布更多代码。
编辑:以下是代码共享的链接,其中包含我的整个代码:https://codeshare.io/PtMxk
答案 0 :(得分:3)
在第167行中,您使用label = []byte(product)
调用加密函数。
在第120行中,您使用已定义但未初始化的label
变量调用您的解密函数(即您正在发送空字节数组)
decrypted = decrypt_oaep(private_key, encrypted, label)
因此,您的解密将无法正常工作。来自文档:
label参数必须与加密时给定的值匹配 - https://golang.org/pkg/crypto/rsa/#DecryptOAEP
<强>解决方案:强>
在解密调用(第120行)中,发送[]byte(product)
作为标签参数。