Asp.net,C\#암호 화 복호화 문자열 의 사용 에 대한 자세 한 설명

우선 웹.config|app.config 파일 에 다음 코드 를 추가 합 니 다

<?xml version="1.0"?>
  <configuration>
    <appSettings>
      <add key="IV" value="SuFjcEmp/TE="/>
      <add key="Key" value="KIPSToILGp6fl+3gXJvMsN4IajizYBBT"/>
    </appSettings>
  </configuration>
IV:암호 화 알고리즘 의 초기 벡터 입 니 다.
Key:암호 화 알고리즘 키 입 니 다.
이 어 암호 화 도움말 클래스 로 CryptoHelper 를 새로 만 듭 니 다.
우선 설정 파일 에서 IV 와 Key 를 받 아야 합 니 다.따라서 기본 코드 는 다음 과 같 습 니 다

public class CryptoHelper
        {
            //private readonly string IV = "SuFjcEmp/TE=";
            private readonly string IV = string.Empty;
            //private readonly string Key = "KIPSToILGp6fl+3gXJvMsN4IajizYBBT";
            private readonly string Key = string.Empty;

            /// <summary>
            ///
            /// </summary>
            public CryptoHelper()
            {
                IV = ConfigurationManager.AppSettings["IV"];
                Key = ConfigurationManager.AppSettings["Key"];
            }
        }

System.configuration.dll 프로그램 집합 참조 추가 에 주의 하 십시오.IV 와 Key 를 획득 한 후 암호 화 서 비 스 를 제공 하 는 Service 클래스 를 획득 해 야 합 니 다.
여기 서 System.security.Cryptography 를 사용 합 니 다.네 임 스페이스 의 TripleDESCrypto ServiceProvider 클래스 입 니 다.
TripleDESCrypto ServiceProvider 를 가 져 오 는 방법 은 다음 과 같다

/// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        private TripleDESCryptoServiceProvider GetCryptoProvider()
        {
            TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();

            provider.IV = Convert.FromBase64String(IV);
            provider.Key = Convert.FromBase64String(Key);

            return provider;
        }

TripleDESCrypto ServiceProvider 두 가지 유용 한 방법
CreateEncryptor:대칭 암호 화기 대상 ICryptoTransform 을 만 듭 니 다.
CreateDecryptor:대칭 복호화 기 대상 ICryptoTransform 만 들 기
암호 화 대상 과 복호화 대상 은 CryptoStream 대상 에서 사용 할 수 있 습 니 다.대 류 를 암호 화하 고 복호화 합 니 다.
cryptoStream 의 구조 함 수 는 다음 과 같 습 니 다.
public CryptoStream(Stream stream, ICryptoTransform transform, CryptoStreamMode mode);
transform 대상 을 사용 하여 stream 을 변환 합 니 다.
완전한 암호 화 문자열 코드 는 다음 과 같 습 니 다

/// <summary>
        ///
        /// </summary>
        /// <param name="inputValue"> .</param>
        /// <returns></returns>
        public string GetEncryptedValue(string inputValue)
        {
            TripleDESCryptoServiceProvider provider = this.GetCryptoProvider();

            //
            MemoryStream mStream = new MemoryStream();

            //
            CryptoStream cStream = new CryptoStream(mStream,
            provider.CreateEncryptor(), CryptoStreamMode.Write);

            // UTF8 。
            byte[] toEncrypt = new UTF8Encoding().GetBytes(inputValue);

            // 。
            cStream.Write(toEncrypt, 0, toEncrypt.Length);
            cStream.FlushFinalBlock();

            // FlushFinalBlock , , mStream 。
            byte[] ret = mStream.ToArray();

            // Close the streams.
            cStream.Close();
            mStream.Close();

            // 64 。
            return Convert.ToBase64String(ret);
        }

복호화 방법 도 유사 합 니 다

/// <summary>
        ///
        /// </summary>
        /// <param name="inputValue"> .</param>
        /// <returns></returns>
        public string GetDecryptedValue(string inputValue)
        {
            TripleDESCryptoServiceProvider provider = this.GetCryptoProvider();

            byte[] inputEquivalent = Convert.FromBase64String(inputValue);

            //
            MemoryStream msDecrypt = new MemoryStream();

            // 。
            CryptoStream csDecrypt = new CryptoStream(msDecrypt,
                                                        provider.CreateDecryptor(),
                                                        CryptoStreamMode.Write);

            csDecrypt.Write(inputEquivalent, 0, inputEquivalent.Length);

            csDecrypt.FlushFinalBlock();
            csDecrypt.Close();

            // 。
            return new UTF8Encoding().GetString(msDecrypt.ToArray());
        }

완전한 CryptoHelper 코드 는 다음 과 같 습 니 다

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;
using System.Configuration;

namespace WindowsFormsApplication1
{
    public class CryptoHelper
    {
        //private readonly string IV = "SuFjcEmp/TE=";
        private readonly string IV = string.Empty;
        //private readonly string Key = "KIPSToILGp6fl+3gXJvMsN4IajizYBBT";
        private readonly string Key = string.Empty;

        public CryptoHelper()
        {
            IV = ConfigurationManager.AppSettings["IV"];
            Key = ConfigurationManager.AppSettings["Key"];
        }

        /// <summary>
        ///
        /// </summary>
        /// <param name="inputValue"> .</param>
        /// <returns></returns>
        public string GetEncryptedValue(string inputValue)
        {
            TripleDESCryptoServiceProvider provider = this.GetCryptoProvider();

            //
            MemoryStream mStream = new MemoryStream();

            //
            CryptoStream cStream = new CryptoStream(mStream,

            provider.CreateEncryptor(), CryptoStreamMode.Write);
            // UTF8 。
            byte[] toEncrypt = new UTF8Encoding().GetBytes(inputValue);

            // 。
            cStream.Write(toEncrypt, 0, toEncrypt.Length);
            cStream.FlushFinalBlock();

            // FlushFinalBlock , , mStream 。
            byte[] ret = mStream.ToArray();

            // Close the streams.
            cStream.Close();
            mStream.Close();

            // 64 。
            return Convert.ToBase64String(ret);
        }

        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        private TripleDESCryptoServiceProvider GetCryptoProvider()
        {
            TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();

            provider.IV = Convert.FromBase64String(IV);
            provider.Key = Convert.FromBase64String(Key);

            return provider;

        }

        /// <summary>
        ///
        /// </summary>
        /// <param name="inputValue"> .</param>
        /// <returns></returns>
        public string GetDecryptedValue(string inputValue)
        {
            TripleDESCryptoServiceProvider provider = this.GetCryptoProvider();
            byte[] inputEquivalent = Convert.FromBase64String(inputValue);

            //
            MemoryStream msDecrypt = new MemoryStream();

            // 。
            CryptoStream csDecrypt = new CryptoStream(msDecrypt,
            provider.CreateDecryptor(),
            CryptoStreamMode.Write);

            csDecrypt.Write(inputEquivalent, 0, inputEquivalent.Length);
            csDecrypt.FlushFinalBlock();

            csDecrypt.Close();

            // 。
            return new UTF8Encoding().GetString(msDecrypt.ToArray());
        }
    }
}

사용 예:
image

좋은 웹페이지 즐겨찾기