Enkripsi atau Encryption adalah proses membuat sandi atau mengacak data untuk menyelubungi pesan yang sesungguhnya dari orang-orang yang tidak mempunyai kunci khusus untuk membaca pesan tersebut.
Pembuatan kata sandi yang paling sederhana (menurut saya) adalah Caesar cipher, enkripsi dengan cara menukarkan huruf demi huruf setelah ditambahkan beberapa step.
Contoh, Pada kalimat "AKU", setiap huruf ditambahkan 2:
A + 2 = C
K + 2 = M
U + 2 = W
Sehingga jika menggunakan Caesar Chiper , AKU = CMW.
Untuk lebih jelasnya, bisa baca link ini.
Dalam tulisan ini, saya akan memberikan teknik enkripsi dengan menggunakan Algoritma Rijndael. Algoritma Rijndael adalah salah satu algoritma yang dapat digunakan untuk melakukan enkripsi data sehingga data asli hanya dapat dibaca oleh seseorang yang memiliki kunci enkripsi tersebut. Contoh yang dibahas kali ini adalah mengenai enkripsi dan dekripsi dari sebuah kalimat.
Saya tidak akan bahas panjang lebar mengenai Algoritma nya, tetapi saya akan langsung berikan code nya. Kebetulan saya menggunakan bahasa pemrograman c# (csharp).
Pembuatan kata sandi yang paling sederhana (menurut saya) adalah Caesar cipher, enkripsi dengan cara menukarkan huruf demi huruf setelah ditambahkan beberapa step.
Contoh, Pada kalimat "AKU", setiap huruf ditambahkan 2:
A + 2 = C
K + 2 = M
U + 2 = W
Sehingga jika menggunakan Caesar Chiper , AKU = CMW.
Untuk lebih jelasnya, bisa baca link ini.
Dalam tulisan ini, saya akan memberikan teknik enkripsi dengan menggunakan Algoritma Rijndael. Algoritma Rijndael adalah salah satu algoritma yang dapat digunakan untuk melakukan enkripsi data sehingga data asli hanya dapat dibaca oleh seseorang yang memiliki kunci enkripsi tersebut. Contoh yang dibahas kali ini adalah mengenai enkripsi dan dekripsi dari sebuah kalimat.
Saya tidak akan bahas panjang lebar mengenai Algoritma nya, tetapi saya akan langsung berikan code nya. Kebetulan saya menggunakan bahasa pemrograman c# (csharp).
using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace MyNameSpace.Helpers { ///Untuk penggunaannya sangat sederhana, bisa dilihat disini./// AES Encryption / Decryption /// - with Rijndael Algorithm /// public class AESEncryption { #region ENCRYPT / DECRYPT public static byte[] AES_Encrypt(byte[] bytesToBeEncrypted, byte[] passwordBytes) { byte[] encryptedBytes = null; // Set your salt here, change it to meet your flavor: // The salt bytes must be at least 8 bytes. byte[] saltBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }; using (MemoryStream ms = new MemoryStream()) { using (RijndaelManaged AES = new RijndaelManaged()) { AES.KeySize = 256; AES.BlockSize = 128; var key = new Rfc2898DeriveBytes(passwordBytes, saltBytes, 1000); AES.Key = key.GetBytes(AES.KeySize / 8); AES.IV = key.GetBytes(AES.BlockSize / 8); AES.Mode = CipherMode.CBC; using (var cs = new CryptoStream(ms, AES.CreateEncryptor(), CryptoStreamMode.Write)) { cs.Write(bytesToBeEncrypted, 0, bytesToBeEncrypted.Length); cs.Close(); } encryptedBytes = ms.ToArray(); } } return encryptedBytes; } public static byte[] AES_Decrypt(byte[] bytesToBeDecrypted, byte[] passwordBytes) { byte[] decryptedBytes = null; // Set your salt here, change it to meet your flavor: // The salt bytes must be at least 8 bytes. byte[] saltBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }; using (MemoryStream ms = new MemoryStream()) { using (RijndaelManaged AES = new RijndaelManaged()) { AES.KeySize = 256; AES.BlockSize = 128; var key = new Rfc2898DeriveBytes(passwordBytes, saltBytes, 1000); AES.Key = key.GetBytes(AES.KeySize / 8); AES.IV = key.GetBytes(AES.BlockSize / 8); AES.Mode = CipherMode.CBC; using (var cs = new CryptoStream(ms, AES.CreateDecryptor(), CryptoStreamMode.Write)) { cs.Write(bytesToBeDecrypted, 0, bytesToBeDecrypted.Length); cs.Close(); } decryptedBytes = ms.ToArray(); } } return decryptedBytes; } #endregion ENCRYPT / DECRYPT public static string EncryptText(string input, string password = "E6t187^D43%F") { // Get the bytes of the string byte[] bytesToBeEncrypted = Encoding.UTF8.GetBytes(input); byte[] passwordBytes = Encoding.UTF8.GetBytes(password); // Hash the password with SHA256 passwordBytes = SHA256.Create().ComputeHash(passwordBytes); byte[] bytesEncrypted = AES_Encrypt(bytesToBeEncrypted, passwordBytes); string result = Convert.ToBase64String(bytesEncrypted); return result; } public static string DecryptText(string input, string password = "E6t187^D43%F") { // Get the bytes of the string byte[] bytesToBeDecrypted = Convert.FromBase64String(input); byte[] passwordBytes = Encoding.UTF8.GetBytes(password); passwordBytes = SHA256.Create().ComputeHash(passwordBytes); byte[] bytesDecrypted = AES_Decrypt(bytesToBeDecrypted, passwordBytes); string result = Encoding.UTF8.GetString(bytesDecrypted); return result; } } }
Mantap Jiwa
ReplyDelete