我创建了这个 C# .Net Framework 4.7 控制台应用程序来测试使用 RSA 加密和解密文本文件。我创建了一对密钥并将它们导出到 xml 文件,然后将它们导入以解密文件 但为什么这会产生填充错误?
System.Security.Cryptography.CryptographicException:“解码 OAEP 填充时出错。”
这是我的代码
static void Main(string[] args)
{
// Generate a new RSA key pair
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
// Export the public key to an XML file
string publicKeyXml = rsa.ToXmlString(false);
File.WriteAllText("public_key.xml", publicKeyXml);
// Export the private key to an XML file
string privateKeyXml = rsa.ToXmlString(true);
File.WriteAllText("private_key.xml", privateKeyXml);
// Encrypt the contents of the input file
string inputFileName = "input.txt";
string outputFileName = "output.txt";
byte[] inputBytes = File.ReadAllBytes(inputFileName);
byte[] encryptedBytes = rsa.Encrypt(inputBytes, true);
File.WriteAllBytes(outputFileName, encryptedBytes);
// Load the RSA public key from an XML file
RSACryptoServiceProvider rsa1 = new RSACryptoServiceProvider();
string publicKeyXml1 = File.ReadAllText("public_key.xml");
rsa.FromXmlString(publicKeyXml1);
// Load the RSA private key from an XML file
string privateKeyXml1 = File.ReadAllText("private_key.xml");
rsa.FromXmlString(privateKeyXml1);
// Decrypt the contents of the output file
byte[] read = File.ReadAllBytes("output.txt");
byte[] decryptedBytes = rsa1.Decrypt(encryptedBytes, true);
string decryptedText = Encoding.UTF8.GetString(decryptedBytes);
Console.WriteLine(decryptedText);
}
我尝试将填充模式更改为 PKCS#1 v1.5,但错误仍然存在。