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ış."); } }
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); }