Rijandeal和特殊人物

问题描述 投票:2回答:1

我正在使用Rijandeal进行enc./dec。我注意到一些特殊字符未正确管理。

这是代码:

    static void Main(string[] args)
    {        
        string enc = RijanENC("šđčćž");
        string dec = RijanDEC(enc);

        Console.WriteLine(dec);
        Console.ReadKey();
    }

    private static string RijanENC(string texto_puro)
    {
        byte[] key = System.Text.Encoding.Default.GetBytes("123abc12");
        byte[] iv = System.Text.Encoding.Default.GetBytes("0123456789abcdef");
        byte[] stringToEncrypt = System.Text.Encoding.UTF32.GetBytes(texto_puro);


        Rijndael rjnAlg = Rijndael.Create();
        System.IO.MemoryStream ms = new MemoryStream();
        CryptoStream cs = new CryptoStream(ms, rjnAlg.CreateEncryptor(key, iv), CryptoStreamMode.Write);
        cs.Write(stringToEncrypt, 0, stringToEncrypt.Length);
        cs.FlushFinalBlock();
        return Convert.ToBase64String(ms.ToArray());
    }

    private static string RijanDEC(string texto_encriptado)
    {
        byte[] key = System.Text.Encoding.Default.GetBytes("123abc12");
        byte[] iv = System.Text.Encoding.Default.GetBytes("0123456789abcdef");
        byte[] stringToDecrypt = new byte[texto_encriptado.Length];


        Rijndael rjnAlg = Rijndael.Create();
        MemoryStream ms = new MemoryStream();
        CryptoStream cs = new CryptoStream(ms, rjnAlg.CreateDecryptor(key, iv), CryptoStreamMode.Write);
        stringToDecrypt = Convert.FromBase64String(texto_encriptado);
        cs.Write(stringToDecrypt, 0, stringToDecrypt.Length);
        cs.FlushFinalBlock();

        Encoding encoding = Encoding.UTF32;
        return encoding.GetString(ms.ToArray());
    }

所以我想要的文字。包含一些变音字符šđčćž。解码后我得到sdccz,即使使用UTF32。

c# encryption diacritics rijndael
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.