示例#1
0
        private static async Task AesTestMemoryAsync()
        {
            string metin = "{ KeMaL; }";

            AES aes = new AES();

            byte[] orijinal = Encoding.UTF8.GetBytes(metin);
            byte[] sifrele  = await aes.ProcessAsync(orijinal, AES.Cryptor.Encrypt);

            byte[] cozuldu = await aes.ProcessAsync(sifrele, AES.Cryptor.Decrypt);

            string cozumMetin = Encoding.UTF8.GetString(cozuldu);

            Console.WriteLine("Key Anahtarı\t: {0}\r\n", Convert.ToBase64String(aes.Key));
            Console.WriteLine("IV Anahtarı\t: {0}\r\n", Convert.ToBase64String(aes.IV));

            Console.WriteLine("AES-256 Bit Şifreleme");
            Console.WriteLine("Orijinal\t: {0}\r\n", metin);
            Console.WriteLine("Sifrelenmiş\t: {0}\r\n", Convert.ToBase64String(sifrele));
            Console.WriteLine("Çözüm\t\t: {0}\r\n", cozumMetin);
            LogAppend(ConsoleColor.White, "Hash\t\t: ");
            if (BitConverter.ToString(MD5.Create().ComputeHash(orijinal)) == BitConverter.ToString(MD5.Create().ComputeHash(cozuldu)))
            {
                LogLine(ConsoleColor.Green, "Doğrulandı.");
            }
            else
            {
                LogLine(ConsoleColor.Red, "Yanlış.");
            }
        }
示例#2
0
        private static async Task AesTestFromFileAsync()
        {
            Console.WriteLine("Lütfen bekleyiniz...");

            string targetFileNameEnc = Path.GetFileNameWithoutExtension(testSourceFileName) + "_AES_encrypted.enc";
            string targetFileNameDec = Path.GetFileNameWithoutExtension(testSourceFileName) + "_AES_decrypted.exe";

            if (File.Exists(targetFileNameEnc))
            {
                File.Delete(targetFileNameEnc);
            }
            if (File.Exists(targetFileNameDec))
            {
                File.Delete(targetFileNameDec);
            }

            AES aes = new AES();
            await aes.ProcessAsync(testSourceFileName, targetFileNameEnc, AES.Cryptor.Encrypt);

            await aes.ProcessAsync(targetFileNameEnc, targetFileNameDec, AES.Cryptor.Decrypt);

            LogAppend(ConsoleColor.White, "Hash\t\t: ");

            if (MD5Hash(testSourceFileName) == MD5Hash(targetFileNameDec))
            {
                LogLine(ConsoleColor.Green, "Doğrulandı.");
            }
            else
            {
                LogLine(ConsoleColor.Red, "Yanlış.");
            }
        }
        /// <summary>
        /// RSA ve AES Karışımı Hibrit Kriptografi
        /// </summary>
        /// <param name="data">Byte[] değerinden şifrelenecek veri</param>
        /// <returns>Kriptolanmış veriyi döndürür</returns>
        public async Task <byte[]> EncryptAsync(byte[] data)
        {
            if (data == null || data.Length == 0)
            {
                throw new ArgumentException("Veri boş olamaz", "veri");
            }

            byte[] veriCrypt = await AES.ProcessAsync(data, AES.Cryptor.Encrypt);

            byte[] KeyCrypt  = RSA.Encrypt(AES.Key);
            byte[] IVCrypt   = RSA.Encrypt(AES.IV);
            byte[] birlestir = new byte[veriCrypt.Length + KeyCrypt.Length + IVCrypt.Length];

            Buffer.BlockCopy(KeyCrypt, 0, birlestir, 0, KeyCrypt.Length);
            Buffer.BlockCopy(IVCrypt, 0, birlestir, KeyCrypt.Length, IVCrypt.Length);
            Buffer.BlockCopy(veriCrypt, 0, birlestir, KeyCrypt.Length + IVCrypt.Length, veriCrypt.Length);

            return(birlestir);
        }