Rijndeal算法解密数据丢失c#中的某些字符

时间:2016-05-03 07:02:39

标签: c# rijndael

我使用Rijndeal算法来加密和解密字符串值。这种方法在大多数情况下都能正常工作,但在同一台机器上,我在解密后会丢失字符。

这是我的示例代码

public static string Decrypt(string cipherText)
{
    try
    {                   


        string incoming = cipherText.Replace('_', '/').Replace('-', '+');
        switch (cipherText.Length % 4)
        {
            case 2: incoming += "=="; break;
            case 3: incoming += "="; break;
        }
        byte[] initVectorBytes = Encoding.ASCII.GetBytes(initVector);
        byte[] cipherTextBytes = Convert.FromBase64String(incoming);
        PasswordDeriveBytes password = new PasswordDeriveBytes(passPhrase, null);
        byte[] keyBytes = password.GetBytes(keysize / 8);
        RijndaelManaged symmetricKey = new RijndaelManaged();
        symmetricKey.Mode = CipherMode.CBC;
        ICryptoTransform decryptor = symmetricKey.CreateDecryptor(keyBytes, initVectorBytes);
        MemoryStream memoryStream = new MemoryStream(cipherTextBytes);
        CryptoStream cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read);
        byte[] plainTextBytes = new byte[cipherTextBytes.Length];
        int decryptedByteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length);
        memoryStream.Close();
        cryptoStream.Close();
        return Encoding.UTF8.GetString(plainTextBytes, 0, decryptedByteCount);
    }
    catch (Exception ex)
    {                  

          return "Exception";
    }
}

0 个答案:

没有答案