【发布时间】:2011-06-17 17:37:51
【问题描述】:
我目前在解密 utf8 编码字符串时遇到了填充问题。
字符串长度不是 16 的倍数,我使用 PKCS7 paddingmode
我当然会使用
cs.FlushFinalBlock()
声明。
什么是,解密后,流不会保存最后一个块。 但是只有在解密时才使用无填充模式时,最后一个块在那里(带有填充字节)
我不知道出了什么问题;)
这里有一点代码(vb.net im sry :D)
加密
Dim rawPlaintext As Byte() = utf8.GetBytes(text) aes.Padding = PaddingMode.PKCS7 Using ms As New MemoryStream() Using cs As New CryptoStream(ms, aes.CreateEncryptor(), CryptoStreamMode.Write) cs.Write(rawPlaintext, 0, rawPlaintext.Length) cs.FlushFinalBlock() ms.Position = 0 End Using Return ms End Using
解密
aes.Padding = PaddingMode.PKCS7 Using ms As New MemoryStream() Using cs As New CryptoStream(ms, aes.CreateDecryptor(key, iv),CryptoStreamMode.Write)
ciphertext.CopyTo(cs) ciphertext.Close() ms.Position = 0 End Using Return ms End Using
希望你们能帮忙;)
谢谢
【问题讨论】: