用于将Bytes数组转换为String的编码,反之亦然
我使用此代码来加密字符串(基本上,这是在MSDN上的Rijndael类上给出的示例):
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
是为了获得真正编码文本的二进制数据 – 事实并非如此。
而是使用Convert.ToBase64String
将二进制数据编码为文本,然后使用Convert.FromBase64String
进行解码。
是的, Encoding.Default
是您机器当前的ANSI代码页,在多台机器/区域设置之间可能会有所不同。 如果数据是文本数据并使其可移植,则需要使用固定的编码格式,例如UTF8。
但是,由于您的数据不是文本数据,因此您无法尝试使用任何文本编码转换为字符串。 最好的选择是使用hex或Base64编码或将其保留为blob / byte数组。
我不是100%肯定在这里,但我认为Encoding.Default是指系统默认编码,是的,可以从系统更改为系统..
如果我在哪里你会使用UTF8或其他一些不会在系统之间改变的编码。
有关扩展ascii的更多信息,请查看此处
https://en.wikipedia.org/wiki/Extended_ASCII
上述就是C#学习教程:用于将Bytes数组转换为String的编码,反之亦然分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1001819.html