C# 用C语言加密/解密阿拉伯字符串#

C# 用C语言加密/解密阿拉伯字符串#,c#,C#,如何使用这些方法在C#中加密/解密阿拉伯字符串???? 当我试图解密任何阿拉伯字符串时,返回“?”问号。。如何通过此代码使用UTF8编码?? 请帮忙。。 提前谢谢 public static string Encrypt(string pDataToEncrypt) { ASCIIEncoding textConverter = new ASCIIEncoding(); RijndaelManaged myRijndael = new RijndaelManaged();

如何使用这些方法在C#中加密/解密阿拉伯字符串???? 当我试图解密任何阿拉伯字符串时,返回“?”问号。。如何通过此代码使用UTF8编码?? 请帮忙。。 提前谢谢

public static string Encrypt(string pDataToEncrypt)
{

    ASCIIEncoding textConverter = new ASCIIEncoding();
    RijndaelManaged myRijndael = new RijndaelManaged();
    byte[] toEncrypt;

    ICryptoTransform encryptor = myRijndael.CreateEncryptor(key, IV);

    MemoryStream msEncrypt = new MemoryStream();
    CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor,            CryptoStreamMode.Write);

    toEncrypt = textConverter.GetBytes(pDataToEncrypt);

    csEncrypt.Write(toEncrypt, 0, toEncrypt.Length);
    csEncrypt.FlushFinalBlock();

    return Convert.ToBase64String(msEncrypt.GetBuffer(), 0, (int)msEncrypt.Length);
}

public static string Decrypt(string pDataToDecrypt)
{
    RijndaelManaged myRijndael = new RijndaelManaged();
    byte[] fromEncrypt;

    //Encoding asciiEncoding = Encoding.ASCII;

    fromEncrypt = Convert.FromBase64String(pDataToDecrypt);
    ICryptoTransform decryptor = myRijndael.CreateDecryptor(key, IV);

    MemoryStream msDecrypt = new MemoryStream(fromEncrypt, 0, fromEncrypt.Length);
    CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read);
    StreamReader sr = new StreamReader(csDecrypt);

    return sr.ReadToEnd();

}

使用UTF-8,您的代码应该如下所示:

public static string Encrypt(string pDataToEncrypt)
{

    RijndaelManaged myRijndael = new RijndaelManaged();

    ICryptoTransform encryptor = myRijndael.CreateEncryptor(key, IV);

    MemoryStream msEncrypt = new MemoryStream();
    CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor,CryptoStreamMode.Write);

    byte[] toEncrypt = Encoding.UTF8.GetBytes(pDataToEncrypt);

    csEncrypt.Write(toEncrypt, 0, toEncrypt.Length);
    csEncrypt.FlushFinalBlock();

    return Convert.ToBase64String(msEncrypt.GetBuffer(), 0, (int)msEncrypt.Length);
}

public static string Decrypt(string pDataToDecrypt)
{
    RijndaelManaged myRijndael = new RijndaelManaged();

    byte[] fromEncrypt = Convert.FromBase64String(pDataToDecrypt);
    ICryptoTransform decryptor = myRijndael.CreateDecryptor(key, IV);

    MemoryStream msDecrypt = new MemoryStream(fromEncrypt, 0, fromEncrypt.Length);
    CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read);

    byte[] plainTextBytes = new byte[fromEncrypt.Length];
    int decryptedByteCount = csDecrypt.Read(plainTextBytes, 0, plainTextBytes.Length);

    return Encoding.UTF8.GetString(plainTextBytes, 0, decryptedByteCount);
}

老兄,我用了你的密码!!Dose not work.@karamalramahi it“Dose not work”信息不足,我无法进一步帮助您我的意思是存在相同的问题,我正在使用控制台应用程序,但您没有告诉我问题是什么,这段代码我没有运行它,我正在使用控制台应用程序,并通过void main将参数发送到函数。。当我尝试加密阿拉伯语字符串时,其返回的qstions标记为“?”,您使用的是WPF、Windows窗体还是ASP.NET Web窗体?如何将字符串参数发送到函数?您正在阅读文本框吗?是的,使用文本框。但是现在我使用控制台应用程序,并且存在相同的问题。您是否尝试使用UTF8编码保存您的网页(aspx文件)?文件>>另存为…>>选择保存按钮上的箭头>>使用编码保存。。。