关于c#4.0:TripleDES在加密数据中返回“相等”符号

TripleDES returning the “equal” symbol in encrypted data

我正在尝试加密/解密要在查询字符串中使用的数据。

大多数情况下,加密数据以"equal"符号"="结尾。

以下是加密字符串的一些示例

1
2
3
4
5
 1 - LS07D43u6Hs=
 2 - oHPgq6hz0A0=  
 3 - 4ugeuARQvXw=  
 abc - gZfrQVAk9Ic=  
 encode me - RfSQYXX1P4MU7LhMsfsG8w==

我从这里复制了代码,做了一些修改。

Basic Encryption/Decryption (C#)

1
2
3
4
5
6
7
8
9
10
11
        byte[] inputArray = UTF8Encoding.UTF8.GetBytes("encode me");
        TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();
        tripleDES.Key = UTF8Encoding.UTF8.GetBytes("abcd123456Idlaaz");
        tripleDES.Mode = CipherMode.ECB;
        tripleDES.Padding = PaddingMode.PKCS7;
        ICryptoTransform cTransform = tripleDES.CreateEncryptor();
        byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length);
        tripleDES.Clear();


        Response.Write(Convert.ToBase64String(resultArray, 0, resultArray.Length));

我试着换钥匙,密码模式,密码模式,但没有运气。它总是返回=在末尾。请帮帮我。


结尾的等号不是加密算法生成的。它是创建base 64编码字符串时要填充的标准过程。您可以在下面找到更多信息:为什么base64编码的字符串末尾有一个=符号?

此外,这个结束机制在这里也得到了很好的解释:http://en.wikipedia.org/wiki/base64