繁体   English   中英

加密值的算术符号无法在C#的实时服务器上解密

[英]Arithmetic signs in encrypted value cannot decrypt on live server in c#

我正在MVC3项目中工作。 加密和解密方法在本地运行良好,但是当我进行直播时,某些值没有达到。 我发现像+,/这样的算术符号引起了问题。 我该如何解决?

我的代码如下:

RijndaelManaged aese = new RijndaelManaged();  

public string Encrypt(string stringToEncrypt)
{
    try
    {
        aese.Mode = CipherMode.CBC;
        aese.Padding = PaddingMode.PKCS7;
        aese.BlockSize = 128;
        aese.KeySize = 128;
        aese.Key = Encoding.UTF8.GetBytes("bsGCslxDSrPTesVG");

        aese.IV = Encoding.UTF8.GetBytes("IkLNSuWfZaQdPQCS");

        byte[] inputByteArray = Encoding.UTF8.GetBytes(stringToEncrypt);

        ICryptoTransform crypto = aese.CreateEncryptor();
        byte[] cipherText = crypto.TransformFinalBlock(inputByteArray, 0, inputByteArray.Length);
        return (Convert.ToBase64String(cipherText));
    }
    catch
    {
        return "Encryption Error";
    }
}

public string Decrypt(string stringToDecrypt)
{
    byte[] inputByteArray = new byte[stringToDecrypt.Length + 1];
    try
    {
        aese.Mode = CipherMode.CBC;
        aese.Padding = PaddingMode.PKCS7;
        aese.BlockSize = 128;
        aese.KeySize = 128;
        aese.Key = Encoding.UTF8.GetBytes("bsGCslxDSrPTesVG");
        aese.IV = Encoding.UTF8.GetBytes("IkLNSuWfZaQdPQCS");
        inputByteArray = Convert.FromBase64String(stringToDecrypt);
        ICryptoTransform decrypto = aese.CreateDecryptor();
        byte[] plainText = aese.CreateDecryptor().TransformFinalBlock(inputByteArray, 0, inputByteArray.Length);

        return Encoding.UTF8.GetString(plainText);
    }
    catch
    {
        return "Dycription Error";
    }
}

考虑到您正在处理Web项目,我猜您正在将Base64编码的密文作为URL或类似名称传递。 由于Base64数据包含的字符在被视为URL时会被不同地解释(例如,URL中的+被解释为space ),因此,如果您在URL中逐字包含Base64编码的数据,则数据将被破坏。

如果打算以这种方式传递Base64数据,则必须在将其包括在URL中之前对其进行正确的URL编码(例如,使用System.Web.HttpUtility.UrlEncode() )。

有一个Base64的URL安全版本,其对值62使用-(减号),对值63使用_(下划线)。有关详细信息,请参阅RFC 4648 ,第5节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM