↓ التخطى الى المحتوى الأساسى
  1. مقالات/

فك تشفير AES في ويندوز 8

Rubén Infante Docio
الناشر
Rubén Infante Docio
مهندس برمجيات

اليوم سنتحدث عن العالم الجميل للتشفير، وليس عن المشفر (وضعه في سرداب).

الأمان مهم، ولهذا السبب سننظر في كيفية التشفير على الخادم وفك تشفير عميل ويندوز 8 في تطبيقات مترو.

في هذا المثال سنستخدم AES مع تشفير 256 بايت، (تشفير عسكري)

حزب الخدمة
#

public string Get()
        {
            //
            String original = "1234567812345678";
            String key = "CLAVEDESEGURIDAD";
            byte[] KeyArr = System.Text.Encoding.ASCII.GetBytes(key);
            String iv = "VECTORINICIALIZACION";
            byte[] IvArr = System.Text.Encoding.ASCII.GetBytes(iv);
            using (AesManaged myAes = new AesManaged())
            {
                return EncryptStringToBytes_Aes(original, KeyArr, IvArr);
            }

        }
        static string EncryptStringToBytes_Aes(string plainText, byte[] Key, byte[] IV)
        {
            byte[] encrypted;
            using (AesManaged aesAlg = new AesManaged())
            {
                ICryptoTransform encryptor = aesAlg.CreateEncryptor(Key, IV);

                using (MemoryStream msEncrypt = new MemoryStream())
                {
                    using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
                    {
                        using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
                        {
                            swEncrypt.Write(plainText);
                            swEncrypt.Flush();
                            encrypted = msEncrypt.ToArray();
                            return Convert.ToBase64String(encrypted);
                        }
                    }
                }
            }

        }

جزء العميل

 function RunSample(cadenacifradaenbase64) {

	var Algorithm = Windows.Security.Cryptography.Core.SymmetricKeyAlgorithmProvider.openAlgorithm("AES_CBC");
        	var keymaterial2 = Windows.Security.Cryptography.CryptographicBuffer.convertStringToBinary("CLAVEDESEGURIDAD", Windows.Security.Cryptography.BinaryStringEncoding.utf8);
        	var key2;
        	try {
        	    key2 = Algorithm.createSymmetricKey(keymaterial2);

        	}
       	 catch (ex) {
        	    Scenario5Output.textContent += ex.message;
        	    Scenario5Output.textContent += "An invalid key size was selected for the given algorithm.n";
        	    return;
       	 }
	var bufferCifrado = Windows.Security.Cryptography.CryptographicBuffer.decodeFromBase64String(cadenacifradaenbase64);
	var iv = Windows.Security.Cryptography.CryptographicBuffer.convertStringToBinary("VECTORINICIALIZACION", Windows.Security.Cryptography.BinaryStringEncoding.utf8);
	var decrypted = Windows.Security.Cryptography.Core.CryptographicEngine.decrypt(key2, bufferCifrado , iv);
        var solucion = Windows.Security.Cryptography.CryptographicBuffer.convertBinaryToString(Windows.Security.Cryptography.BinaryStringEncoding.utf8, decrypted);
}

إذا رأيت أنك تحب هذا النوع من المقالات، في اليوم التالي سنبدأ العملية العكسية

مقالات ذات صلة