我正在尝试加密文本并将加密文本保存为字符串 变量和文本文件。
但令人惊奇的是,字符串中的加密文本看起来并不像 与文本文件中的加密文本相同。
E.g string = bpAz1pcidPuCXbpO + 5RYvQ ==
textfile = n3Ö—"tû‚]ºNû”X½
我真的希望我的字符串变量与我的数据相同 textfile.txt。我的意图是加密字符串变量而不是文本文件。 那么我如何加密我的字符串变量看起来与我的文本文件数据相同?
以下是我的代码:
byte[] plainTextBytes = Encoding.UTF8.GetBytes("my name is calito");
MemoryStream memoryStream = new MemoryStream();
TripleDESCryptoServiceProvider cryptAlgorithm = new TripleDESCryptoServiceProvider();
CryptoStream csEncrypt = new CryptoStream(memoryStream, cryptAlgorithm.CreateEncryptor(), CryptoStreamMode.Write);
csEncrypt.Write(plainTextBytes, 0, plainTextBytes.Length);
//copying encrypted text to string
byte[] cipherTextBytes = memoryStream.ToArray();
string cipherText = Convert.ToBase64String(cipherTextBytes);
//copying incrypted text to text file
File.WriteAllBytes(@"G:\New Text Document.txt", memoryStream.GetBuffer());
答案 0 :(得分:4)
但令人惊奇的是,字符串中的加密文本没有 看起来与文本文件中的加密文本相同。
那是因为您没有将加密的字符串写入文件,该文件是实际缓冲区的Base64表示,但您正在编写缓冲区本身。因此,如果您想将此Base64字符串写入文件,则可以使用WriteAllText
方法:
File.WriteAllText(@"G:\New Text Document.txt", cipherText);
答案 1 :(得分:0)
文本文件中包含的是实际字节数。你在字符串中得到的是相同字节的base64编码变体。