ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [암호화] C#으로 구현된 DES 알고리즘사용
    Programming/암호학 2010. 5. 17. 15:22
    펌: http://www.codeproject.com/KB/cs/NET_Encrypt_Decrypt.aspx
    C#으로 구현된 DES 알고리즘에 대해서 찾다가..
    Code project에 구현되어있는 내용을 가져왔다.
    Console.ReadLine()을 통해서 암호화할 문자를 가져와 Encrypt에서 암호화를 하고 Decrypt에서 복호화를 진행한다.
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Security.Cryptography;
    using System.IO;
    
    namespace EncryptAndDecrypt
    {
        class Program
        {
            static byte[] bytes = ASCIIEncoding.ASCII.GetBytes("ZeroCool");
            static void Main(string[] args)
            {
                try
                {
                    while (true)
                    {
                        Console.WriteLine("Original String: ");
                        string originalString = Console.ReadLine();
                        string cryptedString = Encrypt(originalString);
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.WriteLine("\nEncrypt Result: {0}", cryptedString);
                        Console.WriteLine("Decrypt Result: {0}", Decrypt(cryptedString));
                    }
                }
                catch (Exception ex)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("From: {0}.\nDetail: {1}", ex.Source, ex.Message);
                }
                finally
                {
                    Console.ReadLine();
                }
    
            }
    
            public static string Encrypt(string originalString)
            {
                if (String.IsNullOrEmpty(originalString))
                {
                    throw new ArgumentNullException("The string which needs to be encrypted can not be null.");
                }
                DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
                MemoryStream memoryStream = new MemoryStream();
                CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoProvider.CreateEncryptor(bytes, bytes), CryptoStreamMode.Write);
                StreamWriter writer = new StreamWriter(cryptoStream);
                writer.Write(originalString);
                writer.Flush();
                cryptoStream.FlushFinalBlock();
                writer.Flush();
                return Convert.ToBase64String(memoryStream.GetBuffer(), 0, (int)memoryStream.Length);
            }
    
            public static string Decrypt(string cryptedString)
            {
                if (String.IsNullOrEmpty(cryptedString))
                {
                    throw new ArgumentNullException("The string which needs to be decrypted can not be null.");
                }
                DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
                MemoryStream memoryStream = new MemoryStream(Convert.FromBase64String(cryptedString));
                CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoProvider.CreateDecryptor(bytes, bytes), CryptoStreamMode.Read);
                StreamReader reader = new StreamReader(cryptoStream);
                return reader.ReadToEnd();
            }
        }
    }
    


    'Programming > 암호학' 카테고리의 다른 글

    [암호화] 대칭키 암호  (0) 2009.10.29
Designed by Tistory.