C#加密字符串变量

时间:2012-02-24 07:32:46

标签: c#

我正在尝试加密文本并将加密文本保存为字符串 变量和文本文件。

但令人惊奇的是,字符串中的加密文本看起来并不像 与文本文件中的加密文本相同。

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());  

2 个答案:

答案 0 :(得分:4)

  

但令人惊奇的是,字符串中的加密文本没有   看起来与文本文件中的加密文本相同。

那是因为您没有将加密的字符串写入文件,该文件是实际缓冲区的Base64表示,但您正在编写缓冲区本身。因此,如果您想将此Base64字符串写入文件,则可以使用WriteAllText方法:

File.WriteAllText(@"G:\New Text Document.txt", cipherText);  

答案 1 :(得分:0)

文本文件中包含的是实际字节数。你在字符串中得到的是相同字节的base64编码变体。