0 votes

Implémentation de la fonction PHP AES en .NET (C#)

J'ai reçu une tâche dans laquelle je dois crypter l'ID d'un utilisateur en utilisant le cryptage AES, ce qu'ils veulent, c'est que je doive passer un paramètre dans un site Web comme ceci.

URL : http://www.site.com/event/sample.jce Paramètre : ?param= texte crypté

A part cela, il y avait un exemple php joint qu'ils veulent que je suive pour crypter mais je n'ai pas d'idée sur la façon de convertir celui-ci en .NET.

f $sCipher = mcrypt_encrypt(MCRYP return bin2hex($sCipher) ; }

$sStr = "13410##13" ;
$sKey = "mediaservice1234" ; $sKey = "kjcemsdev3jangho" ; // Ne pas changer

$sIV = "fs0tjwkdgh0akstp" ; // Ne pas changer

$tmp= getEncrypt($sStr, $sKey, $sIV) ;

Est-ce que quelqu'un pourrait m'aider à comprendre ce code ? ou mieux s'il pouvait m'aider à convertir ce code en code .NEt ? Je vous remercie. :)

0voto

Pbirkoff Points 2634

Vous trouverez ici de plus amples informations sur l'utilisation du cryptage AES dans .net :

http://msdn.microsoft.com/en-us/library/system.security.cryptography.rijndaelmanaged%28VS.80%29.aspx

Le code est assez simple.

0voto

Simmo Points 2364

Essayez ceci, vous devez définir le FeedbackSize et le Padding :

public static string Encrypt(string plaintext)
        {
            RijndaelManaged rijndaelCipher = new RijndaelManaged();
            //RijndaelManaged rijndaelCipher = new RijndaelManaged();
            rijndaelCipher.FeedbackSize = 8;
            rijndaelCipher.Mode = CipherMode.CFB;
            rijndaelCipher.KeySize = 128;
           // rijndaelCipher.BlockSize = 128;
            rijndaelCipher.BlockSize = 128;
            rijndaelCipher.Padding = PaddingMode.Zeros;
            byte[] plaintextByte = System.Text.Encoding.ASCII.GetBytes(plaintext);
            //Rfc2898DeriveBytes
            ASCIIEncoding textConverter = new ASCIIEncoding();
            rijndaelCipher.Key = textConverter.GetBytes(PRIVATEKEY); ;
            rijndaelCipher.IV = Convert.FromBase64String(PRIVATEIV);

            ICryptoTransform encryptor = rijndaelCipher.CreateEncryptor();

            //http://msdn.microsoft.com/en-us/library/system.security.cryptography.rijndaelmanaged(VS.80).aspx
            //Encrypt the data.
            MemoryStream msEncrypt = new MemoryStream();
            CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write);

            //Convert the data to a byte array.
            byte[] toEncrypt = textConverter.GetBytes(plaintext);

            //Write all data to the crypto stream and flush it.
            csEncrypt.Write(toEncrypt, 0, toEncrypt.Length);
            csEncrypt.FlushFinalBlock();
            byte[] encrypted = new byte[16];
            //Get encrypted array of bytes.
            encrypted = msEncrypt.ToArray();

            return Convert.ToBase64String(encrypted);
        }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X