C\#AES 암호 화 및 복호화 실현 방법

AES 안내
AES(The Advanced Encryption Standard)는 미국 국가 표준 및 기술 연구소 가 전자 데 이 터 를 암호 화 하 는 데 사용 하 는 규범 이다.그것 은 금융,전신,정부 디지털 정 보 를 포함 한 사람들 이 공인 하 는 암호 화 방법 이 될 것 으로 예상 된다.
AES 는 전자 데 이 터 를 보호 할 수 있 는 새로운 암호 화 알고리즘 이다.명확 하 게 말 하면 AES 는 128,192,256 비트 키 를 사용 하고 128 비트(16 바이트)로 데 이 터 를 암호 화하 고 복호화 할 수 있 는 교체 되 고 대칭 적 인 키 로 구 성 된 암호 입 니 다.공공 키 암 호 는 키 쌍 을 사용 하 는 것 과 달리 대칭 키 암 호 는 같은 키 암호 화 와 복호화 데 이 터 를 사용 합 니 다.그룹 암 호 를 통 해 돌아 오 는 암호 화 된 데이터 의 자릿수 는 입력 데이터 와 같 습 니 다.다음은 제 가 정리 한 코드 입 니 다.여러분 께 도움 이 되 었 으 면 합 니 다.

/// <summary>
/// ASE
/// </summary>
public class AESHelper
{
    /// <summary>
    ///
    /// </summary>
    private static string Key
    {
        get
        {
            return "abcdef1234567890";    //// 16
        }
    }

    //
    private static byte[] _key1 = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };

    /// <summary>
    /// AES
    /// </summary>
    /// <param name="plainText"> </param>
    /// <returns> Base64 , </returns>
    public static string AESEncrypt(string plainText)
    {
        //
        SymmetricAlgorithm des = Rijndael.Create();
        byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);//
        //
        des.Key = Encoding.UTF8.GetBytes(Key);
        des.IV = _key1;
        byte[] cipherBytes = null;
        using (MemoryStream ms = new MemoryStream())
        {
            using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
            {
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
                cipherBytes = ms.ToArray();//
                cs.Close();
                ms.Close();
            }
        }
        return Convert.ToBase64String(cipherBytes);
    }

    /// <summary>
    /// AES
    /// </summary>
    /// <param name="cipherText"> </param>
    /// <returns> </returns>
    public static string AESDecrypt(string showText)
    {
        byte[] cipherText = Convert.FromBase64String(showText);

        SymmetricAlgorithm des = Rijndael.Create();
        des.Key = Encoding.UTF8.GetBytes(Key);
        des.IV = _key1;
        byte[] decryptBytes = new byte[cipherText.Length];
        using (MemoryStream ms = new MemoryStream(cipherText))
        {
            using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read))
            {
                cs.Read(decryptBytes, 0, decryptBytes.Length);
                cs.Close();
                ms.Close();
            }
        }
        return Encoding.UTF8.GetString(decryptBytes).Replace("\0", "");   /// '\0'
    }
}

Key 의 값 은 config 파일 에 넣 을 수도 있 고 데이터베이스 에 넣 을 수도 있 습 니 다.

좋은 웹페이지 즐겨찾기