>  기사  >  백엔드 개발  >  Asp.net,C# 암호화 및 암호 해독 문자열

Asp.net,C# 암호화 및 암호 해독 문자열

巴扎黑
巴扎黑원래의
2016-12-20 16:01:411469검색

먼저 web.config | app.config 파일에 다음 코드를 추가합니다.
>
>



IV: 암호화 알고리즘의 초기 벡터.

키: 암호화 알고리즘의 키입니다.



그런 다음 암호화 도우미 클래스로 CryptoHelper라는 새 클래스를 만듭니다.

먼저 구성 파일에서 IV와 키를 가져옵니다. 따라서 기본 코드는 다음과 같습니다.
public class CryptoHelper
{
//private readonly string IV = "SuFjcEmp/TE="
private readonly string IV = string.Empty; //개인 읽기 전용 문자열 Key = "KIPSToILGp6fl+3gXJvMsN4IajizYBBT";
개인 읽기 전용 문자열 Key = string.Empty;

///

🎜>              /// < ;/summary> 🎜>            공개 CryptoHelper()                                                                                                       Settings["Key"];
     } 
}





System.Configuration.dll 어셈블리 추가에 주의하세요. 참조.



IV와 Key를 획득한 후 암호화 서비스를 제공하는 Service 클래스를 획득해야 합니다.

여기서는 System.Security.Cryptography 네임스페이스 아래의 TripleDESCryptoServiceProvider 클래스가 사용됩니다.

TripleDESCryptoServiceProvider를 얻는 방법은 다음과 같습니다.
///
                                              > 🎜> {
TripleDESCryptoServiceProvider = new TripleDESCryptoServiceProvider(); 🎜> 제공자.IV = Convert.FromBase64String(IV);
            제공자.Key = Convert.FromBase64String(Key); 🎜>CreateEncryptor:대칭 암호화기 개체를 생성합니다.

CreateDecryptor: 대칭형 암호 해독기 개체 생성 ICryptoTransform

암호화기 개체 및 암호 해독기 개체는 CryptoStream 개체에서 사용할 수 있습니다. 스트림을 암호화하고 해독합니다.

cryptStream의 생성자는 다음과 같습니다.
public CryptoStream(Stream stream, ICryptoTransformTransform, CryptoStreamMode mode)

Transform 개체를 사용하여 스트림을 변환합니다.



완전한 암호화된 문자열 코드는 다음과 같습니다.
///
/// 암호화된 문자열 가져오기
/// < summary>
; /// 입력값.
/// public string GetEncryptedValue(string inputValue)
{ MemoryStream mStream = new MemoryStream() ;

// 암호화된 변환 스트림 생성
CryptoStream cStream = new CryptoStream(mStream,
공급자.CreateEncryptor( ), CryptoStreamMode.Write);

// UTF8 인코딩을 사용하여 입력 문자열의 바이트를 얻습니다.
byte[] toEncrypt = new UTF8Encoding().GetBytes(inputValue);

// 변환 스트림에 바이트를 씁니다.
cStream.Write(toEncrypt, 0, toEncrypt.Length);
cStream.FlushFinalBlock();

// 변환 스트림의 FlushFinalBlock 메서드를 호출한 후 내부적으로 변환이 수행됩니다. 이때 mStream은 암호화된 스트림입니다.
byte[] ret = mStream.ToArray();

// 스트림을 닫습니다.
cStream.Close()
mStream.Close(); //암호화된 바이트를 64비트 인코딩으로 인코딩합니다.
                                 return Convert.ToBase64String(ret) >              /// 해독된 값 가져오기 > /// 공개 문자열 GetDecryptedValue(string inputValue)
{
TripleDESCryptoServiceProvider 공급자 = this.GetCryptoProvider();

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

                                      ~
CryptoStream csDecrypt = new CryptoStream(msDecrypt,
공급자.CreateDecryptor(),
CryptoStreamMode.Write)

csDecrypt.Write(inputEquivalent, 0, inputEquivalent.Length);
                                                 csDecrypt.FlushFinalBlock();            //获取字符串。 
            return new UTF8Encoding().GetString(msDecrypt.ToArray()); 
       } 





完整的CryptoHelper代码如下: 
시스템 사용; 
System.Collections.Generic 사용; 
System.Linq 사용; 
System.Text 사용; 
System.Security.Cryptography 사용; 
System.IO 사용; 
System.Configuration 사용; 

네임스페이스 WindowsFormsApplication1 

    공개 클래스 CryptoHelper 
    { 
        //개인 읽기 전용 문자열 IV = "SuFjcEmp/TE="; 
        비공개 읽기 전용 문자열 IV = string.Empty; 
        //비공개 읽기 전용 문자열 Key = "KIPSToILGp6fl+3gXJvMsN4IajizYBBT"; 
        비공개 읽기 전용 문자열 Key = string.Empty; 

        공개 CryptoHelper() 
        { 
           IV = ConfigurationManager.AppSettings["IV"]; 
            키 = ConfigurationManager.AppSettings["Key"]; 
        } 

        ///  
        /// 获取加密后的字符串 
        ///
 
        /// 输入值. 
        /// <반품> 
        공개 문자열 GetEncryptedValue(string inputValue) 
        { 
            TripleDESCryptoServiceProvider 공급자 = this.GetCryptoProvider(); 

            // 创建内存流来保存加密后的流 
            MemoryStream mStream = new MemoryStream(); 

            // 创建加密转换流 
           CryptoStream cStream = new CryptoStream(mStream, 

           Provider.CreateEncryptor(), CryptoStreamMode.Write); 
            // 使useUTF8编码获取输入字符串的字节。 
            byte[] toEncrypt = new UTF8Encoding().GetBytes(inputValue); 

            // 将字节写到转换流里面去。 
            cStream.Write(toEncrypt, 0, toEncrypt.Length); 
            cStream.FlushFinalBlock(); 

            // 在调用转换流的FlushFinalBlock방식后,内部就会进行转换了,此时mStream就是加密后流了。 
           [] ret = mStream.ToArray(); 

            // 스트림을 닫습니다. 
            cStream.Close(); 
            mStream.Close(); 

            //将加密后的字节进行64编码。
            return Convert.ToBase64String(ret); 
        } 

        ///  
        /// 获取加密服务类 
        ///
 
        /// <반품> 
        private TripleDESCryptoServiceProvider GetCryptoProvider() 
        { 
            TripleDESCryptoServiceProvider 공급자 = new TripleDESCryptoServiceProvider(); 

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

            반품업체; 

        } 

        ///  
        /// 获取解密后的值 
        ///
 
        /// 经过加密后的字符串. 
        /// <반품> 
        공개 문자열 GetDecryptedValue(string inputValue) 
        { 
            TripleDESCryptoServiceProvider 공급자 = this.GetCryptoProvider(); 
            byte[] inputEquivalent = Convert.FromBase64String(inputValue); 

            // 创建内存流保存解密后的数据 
            MemoryStream msDecrypt = new MemoryStream(); 

           // 创建转换流。 ); 

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

            csDecrypt.Close(); 

            //获取字符串。 
            return new UTF8Encoding().GetString(msDecrypt.ToArray()); 
        } 
    } 

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.