'Decrypt'에 해당되는 글 1건

  1. 2010/08/18 C# DES 암호화(Encrypt), 복호화(Decrypt)
Programming/C#2010/08/18 16:08

ex>>
// 암호화 키(8byte)
static byte[] desKey = ASCIIEncoding.ASCII.GetBytes("tech0001");
Des des = new Des(desKey);
.......

Des Class(암호화, 복호화)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Security.Cryptography;
using System.IO;


/// <summary>
/// Summary description for Des
/// </summary>
public class Des
{
    byte[] key = null;
protected Des()
{
}

    public Des(byte[] desKey)
    {
        this.key = desKey;
    }

    public string Encrypt(string plain_text)
    {
        if (string.IsNullOrEmpty(plain_text))
        {
            throw new ArgumentException("The string which needs to be encrypted can not be null.");
        }
        if (key.Length != 8)
        {
            throw (new Exception("Invalid key. Key length must be 8 byte."));
        }

        DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
        MemoryStream memoryStream = new MemoryStream();
        CryptoStream cryptoStream = new CryptoStream(memoryStream,
            cryptoProvider.CreateEncryptor(key, key), CryptoStreamMode.Write);
        StreamWriter writer = new StreamWriter(cryptoStream);
        writer.Write(plain_text);
        writer.Flush();
        cryptoStream.FlushFinalBlock();
        writer.Flush();
        string cypher_text = Convert.ToBase64String(memoryStream.GetBuffer(), 0, (int)memoryStream.Length);
        return cypher_text;
    }

    public string Decrypt(string cypher_text)
    {
        if (String.IsNullOrEmpty(cypher_text))
        {
            throw new ArgumentNullException
               ("The string which needs to be decrypted can not be null.");
        }
        if (key.Length != 8)
        {
            throw (new Exception("Invalid key. Key length must be 8 byte."));
        }
        DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
        MemoryStream memoryStream = new MemoryStream
                (Convert.FromBase64String(cypher_text));
        CryptoStream cryptoStream = new CryptoStream(memoryStream,
            cryptoProvider.CreateDecryptor(key, key), CryptoStreamMode.Read);
        StreamReader reader = new StreamReader(cryptoStream);
        string plain_text = reader.ReadToEnd();
        return plain_text;
    }
}
저작자 표시 비영리 변경 금지
Posted by Mizix