문자열 암호화는 여기저기서 자주 사용하게된다.
함수로 만들어봤다 ㅎㅎㅎ
에러처리등이 없긴 하지만 급한대로 가져다 쓸 수 있을 듯?
함수로 만들어봤다 ㅎㅎㅎ
에러처리등이 없긴 하지만 급한대로 가져다 쓸 수 있을 듯?
[출처] C#으로 구현한 DES 문자열 암호화!|작성자 연두부zinzza
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | using System; using System.Collections.Generic; using System.Text; using System.IO; //요거 걸어줘야한다. using System.Security.Cryptography; namespace LC2Crypt { class Program { static void Main( string [] args) { string OriStr = "Hello World" ; string EncStr = Encrypt(OriStr); string DecStr = Decrypt(EncStr); Console.WriteLine( "원본 데이터==========================" ); Console.WriteLine(OriStr); Console.WriteLine( "암호화 데이터=========================" ); Console.WriteLine(EncStr); Console.WriteLine( "복호화 데이터=========================" ); Console.WriteLine(DecStr); } //암호화 키. 8글자로 이루어짐. static byte [] Skey = ASCIIEncoding.ASCII.GetBytes( "11111111" ); static string Encrypt( string p_data) { // 암호화 알고리즘중 RC2 암호화를 하려면 RC를 // DES알고리즘을 사용하려면 DESCryptoServiceProvider 객체를 선언한다. //RC2 rc2 = new RC2CryptoServiceProvider(); DESCryptoServiceProvider rc2 = new DESCryptoServiceProvider(); // 대칭키 배치 rc2.Key = Skey; rc2.IV = Skey; // 암호화는 스트림(바이트 배열)을 // 대칭키에 의존하여 암호화 하기때문에 먼저 메모리 스트림을 생성한다. MemoryStream ms = new MemoryStream(); //만들어진 메모리 스트림을 이용해서 암호화 스트림 생성 CryptoStream cryStream = new CryptoStream(ms, rc2.CreateEncryptor(), CryptoStreamMode.Write); // 데이터를 바이트 배열로 변경 byte [] data = Encoding.UTF8.GetBytes(p_data.ToCharArray()); // 암호화 스트림에 데이터 씀 cryStream.Write(data, 0, data.Length); cryStream.FlushFinalBlock(); // 암호화 완료 (string으로 컨버팅해서 반환) return Convert.ToBase64String(ms.ToArray()); } static string Decrypt( string p_data) { // 암호화 알고리즘중 RC2 암호화를 하려면 RC를 // DES알고리즘을 사용하려면 DESCryptoServiceProvider 객체를 선언한다. //RC2 rc2 = new RC2CryptoServiceProvider(); DESCryptoServiceProvider rc2 = new DESCryptoServiceProvider(); // 대칭키 배치 rc2.Key = Skey; rc2.IV = Skey; // 암호화는 스트림(바이트 배열)을 // 대칭키에 의존하여 암호화 하기때문에 먼저 메모리 스트림을 생성한다. MemoryStream ms = new MemoryStream(); //만들어진 메모리 스트림을 이용해서 암호화 스트림 생성 CryptoStream cryStream = new CryptoStream(ms, rc2.CreateDecryptor(), CryptoStreamMode.Write); //데이터를 바이트배열로 변경한다. byte [] data = Convert.FromBase64String(p_data); //변경된 바이트배열을 암호화 한다. cryStream.Write(data, 0, data.Length); cryStream.FlushFinalBlock(); //암호화 한 데이터를 스트링으로 변환해서 리턴 return Encoding.UTF8.GetString(ms.GetBuffer()); } } } |