c# - 无法从字节转换为字符串

标签 c# encryption aes rijndael

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

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

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

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

为了在文本框中显示,将字节[]转换为字符串:

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

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

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

最佳答案

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

textBox3.Text =Convert.ToBase64String(encryptionResult)

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

如果您仍想使用编码,请选择:

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

关于c# - 无法从字节转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21216379/

相关文章:

c# - 您会建议 Google Analytic 在您的 Web App Application Admin 部分中跟踪用户事件吗?

c# - ObservableCollection<T> 快速填充但缓慢绑定(bind)可视化

c# - 使用 Bouncy CaSTLe AES/CBC/PKCS7 加密字符串

encryption - 如何计算位串的近似熵?

Java AES CTR IV 和计数器

c# - 如何在 ASP.NET Core 中设置 cookie validateInterval?

android - 如何在视频 View 中播放加密视频而不解密

java - 在什么情况下我会使用非默认 Java 加密提供程序?

PHP AES 加密 - 无法解密数据库中存储的某些值

c# - RuntimeInitializeOnLoad 未使用条件编译运行