簡體   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