c# - 用于将字节数组转换为字符串的编码,反之亦然

标签 c# string encoding bytearray

我使用此代码来加密字符串(基本上,这是 Rijndael class on MSDN 上给出的示例):

public static String AESEncrypt(String str2Encrypt, Byte[] encryptionKey, Byte[] IV)
{
    Byte[] encryptedText;

    using (RijndaelManaged rijAlg = new RijndaelManaged())
    {
        // Use the provided key and IV
        rijAlg.Key = encryptionKey;
        rijAlg.IV = IV;

        // Create a decrytor to perform the stream transform
        ICryptoTransform encryptor = rijAlg.CreateEncryptor(rijAlg.Key, rijAlg.IV);

        // Create the streams used for encryption
        using (MemoryStream msEncrypt = new MemoryStream())
        using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
        {
            using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
            {
                // Write all data to the stream
                swEncrypt.Write(str2Encrypt);
            }

            encryptedText = msEncrypt.ToArray();
        }
    }

    return Encoding.Default.GetString(encryptedText);
}

我使用 Encoding.Default 将字节数组转换为字符串,但我不确定这是一个好的解决方案。我的目标是在文件中存储加密文本(例如密码...)。我应该继续使用 Encoding.Default 还是使用 Encoding.UTF8Encoding 或其他东西?

如果文件移动到不同的操作系统,当我尝试加密和解密它们时,这会对存储的值产生负面影响吗?

最佳答案

你应该绝对不要使用 Encoding将任意二进制数据转换为文本。 Encoding 适用于当您拥有真正编码文本的二进制数据时 - 这不是。

相反,使用 Convert.ToBase64String将二进制数据编码为文本,然后使用 Convert.FromBase64String 解码.

关于c# - 用于将字节数组转换为字符串的编码,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7996955/

相关文章:

c# - 更改发布版本格式

javascript - 使用 Javascript 根据多个字符从格式错误的 URL 中提取字符串

c - 请解释这段代码在做什么(someChar - 48)

python - 电子邮件主题中的编码如何工作? ( Django / python )

c# - 调度员不调度

c# - 如何返回异步 IEnumerable<string>?

c# - 强类型数据集与弱类型数据集

java - 如何在避免 NoSuchElementException 错误的同时获取可选值?

string - 将多行字符串中的指定列转换为单个逗号分隔行

CentOS - 解析 XML 文件时出错