我试图通过一个内存流来解密PGP加密文本。因为PgpCore NuGet包接收了一个通用的Stream对象,所以我希望MemoryStream可以工作。相反,我得到了诸如 "unknown object in stream 47 "这样的模糊错误。
我在网上看了一堆资料,表明编码是关键,但我只是用不同的编码得到不同的错误。当我用FileStream对象测试的时候,解密函数非常好用,运行起来没有问题。
这个不工作。
using var pgp = new PGP();
var fileStream = new MemoryStream(Encoding.Default.GetBytes(File.ReadAllText(file)));
var privateKeyStream = new MemoryStream(Encoding.Default.GetBytes(File.ReadAllText("prod")));
pgp.DecryptStream(fileStream, outputStream, privateKeyStream, "[redacted]");
这个行得通
using var pgp = new PGP();
var fileStream = File.OpenRead(file);
var privateKeyStream = new MemoryStream(Encoding.Default.GetBytes(File.ReadAllText("prod")));
pgp.DecryptStream(fileStream, outputStream, privateKeyStream, "[redacted]");
我错过了什么?FileStream和MemoryStream之间有什么不同,一个能用,另一个不能用?
Encoding.Default.GetBytes(File.ReadAllText(file))
这是一种相当奇怪的读取文件的方式,可能会引入一些编码问题。试着用这种方式代替。
new MemoryStream(File.ReadAllBytes(file));