三重 DES 返回加密数据中的"equal"符号



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

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

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

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

我从这里复制了代码并进行了一些更改。

http://www.deltasblog.co.uk/code-snippets/basic-encryptiondecryption-c/

        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

最新更新