C#で、DES暗号化
C#で、DES暗号化と復号のサンプルです。
コンソールアプリで、第1引数で入力したテキストを暗号化します。8バイト以上のテキストファイルも暗号化と復号ができます(CBC)。入力データはテキストファイルでもソケットでも応用が利きます。
using System; using System.Text; using System.Security.Cryptography; class Program { //暗号化関数 static byte[] EncryptText(string str, byte[] Key) { DESCryptoServiceProvider des = new DESCryptoServiceProvider(); des.Key = Key; des.IV = Key; byte[] bstr = Encoding.UTF8.GetBytes(str); ICryptoTransform transform = des.CreateEncryptor(); byte[] encrypted = transform.TransformFinalBlock(bstr, 0, bstr.Length); transform.Dispose(); return encrypted; } //復号関数 static byte[] DecryptText(byte[] bcrypt, byte[] Key) { DESCryptoServiceProvider des = new DESCryptoServiceProvider(); des.Key = Key; des.IV = Key; ICryptoTransform destransform = des.CreateDecryptor(); byte[] decrypted = destransform.TransformFinalBlock(bcrypt, 0, bcrypt.Length); destransform.Dispose(); return decrypted; } static void Main(string[] args) { //8バイトのキーを指定 byte[] secretKey = Encoding.UTF8.GetBytes("secretky"); //引数で指定したテキストを暗号化 Console.WriteLine("「{0}」を暗号化します。",args[0]); byte[] encryptdata = EncryptText(args[0], secretKey); //復号 byte[] decryptdata = DecryptText(encryptdata, secretKey); Console.WriteLine("「{0}」を復号しました。", Encoding.UTF8.GetString(decryptdata)); } }