【问题标题】:Cannot Convert From Byte to String无法从字节转换为字符串
【发布时间】:2014-01-19 11:53:16
【问题描述】:

我正在构建一个 C# 应用程序,它使用 System.Security.Cryptography.Rijndael 在文本框中加密文本并显示结果,以便接收者复制结果并使用相同的密钥对其进行解密。

当我将加密文本从EncryptStringToBytes 函数返回的 byte[] 转换为可以显示在 textBox 中以便以后复制和解密的字符串时,就会出现问题。

我使用了以下转换方法,但没有一个能够显示有意义的字符串,该字符串可以稍后用于解密,并且可以重新转换为之前从 EncryptStringToBytes 返回的原始字节形状。

以下是用于执行转换的方法:

从 byte[] 转换为字符串以便在文本框中显示:

textBox3.Text = Encoding.Default.GetString(encryptionResult)

将从 textBox 复制的字符串转换为 byte[] 以便作为参数发送到 DecryptStringFromBytes 以完成解密过程:

byte[] textToByte = Encoding.Default.GetBytes(textToDecrypt)

【问题讨论】:

  • 从任何二进制序列中获取有意义文本的最简单方法是使用"hexstring",即“87160a20a03daec4adc1934”等。如果您使用编码器来获取实际文本,则会遇到无法轻松表示的二进制序列的问题。

标签: c# encryption aes rijndael


【解决方案1】:

您应该尝试使用 64 编码进行编码和解码。 使用转换类。

textBox3.Text =Convert.ToBase64String(encryptionResult)

byte[] textToByte = Convert.FromBase64String(textToDecrypt);

如果还想使用encode,请选择:

string decodedString = Encoding.UTF8.GetString(textToDecrypt);

【讨论】:

    猜你喜欢
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多