.net 如何对字节数组进行PGP加密

.net 如何对字节数组进行PGP加密,.net,encryption,pgp,.net,Encryption,Pgp,我有一个PGP加密示例,它从文件中读取数据并进行加密,没有任何问题 我试图将代码转换为从字节数组而不是从文件加密 下面给出了原始示例代码和我的转换尝试 转换后的代码输出错误 请问我错过了什么 示例代码-读取文件并使用PGP加密 我的转换代码-PGP加密字节数组 Public Sub EncryptAndSign(outputStream As Stream, unencryptedFileInfo As FileInfo) Using encryptedOut As Stream = C

我有一个PGP加密示例,它从文件中读取数据并进行加密,没有任何问题

我试图将代码转换为从字节数组而不是从文件加密

下面给出了原始示例代码和我的转换尝试

转换后的代码输出错误

请问我错过了什么

示例代码-读取文件并使用PGP加密

我的转换代码-PGP加密字节数组

Public Sub EncryptAndSign(outputStream As Stream, unencryptedFileInfo As FileInfo)
    Using encryptedOut As Stream = ChainEncryptedOut(outputStream)
        Using compressedOut As Stream = ChainCompressedOut(encryptedOut)
            Dim signatureGenerator As PgpSignatureGenerator = InitSignatureGenerator(compressedOut)
            Using literalOut As Stream = ChainLiteralOut(compressedOut, unencryptedFileInfo)
                Using inputFile As FileStream = unencryptedFileInfo.OpenRead()
                    WriteOutputAndSign(compressedOut, literalOut, inputFile, signatureGenerator)
                End Using
            End Using
        End Using
    End Using
End Sub

Private Shared Function ChainLiteralOut(compressedOut As Stream, file As FileInfo) As Stream    
    Dim pgpLiteralDataGenerator As New PgpLiteralDataGenerator()

    Return pgpLiteralDataGenerator.Open(compressedOut, PgpLiteralData.Binary, file)
End Function

Private Shared Sub WriteOutputAndSign(compressedOut As Stream, literalOut As Stream, inputFile As FileStream, signatureGenerator As PgpSignatureGenerator)
    Dim length As Integer = 0

    Dim buf(BufferSize - 1) As Byte

    length = inputFile.Read(buf, 0, buf.Length)
    Do While length > 0
        literalOut.Write(buf, 0, length)

        signatureGenerator.Update(buf, 0, length)

        length = inputFile.Read(buf, 0, buf.Length)
    Loop

    signatureGenerator.Generate().Encode(compressedOut)
End Sub
Public Sub EncryptAndSign(outputStream As Stream, unencryptedData As Byte())
    Using encryptedOut As Stream = ChainEncryptedOut(outputStream)
        Using compressedOut As Stream = ChainCompressedOut(encryptedOut)
            Dim signatureGenerator As PgpSignatureGenerator = InitSignatureGenerator(compressedOut)
            Using literalOut As Stream = ChainLiteralOut(compressedOut, unencryptedData)
                WriteOutputAndSign(compressedOut, literalOut, unencryptedData, signatureGenerator)
            End Using
        End Using
    End Using
End Sub

Private Shared Function ChainLiteralOut(compressedOut As Stream, data As Byte()) As Stream
    Dim pgpLiteralDataGenerator As New PgpLiteralDataGenerator()

    Return pgpLiteralDataGenerator.Open(compressedOut, PgpLiteralData.Utf8, "enc_" & Now.Ticks, Now, data)
End Function

Private Shared Sub WriteOutputAndSign(compressedOut As Stream, literalOut As Stream, inputData As Byte(), signatureGenerator As PgpSignatureGenerator)
    Dim length As Integer = inputData.Length
    Dim buf = inputData

    literalOut.Write(buf, 0, length)
    signatureGenerator.Update(buf, 0, length)

    signatureGenerator.Generate().Encode(compressedOut)
End Sub