Asp.net,C\#암호 화 복호화 문자열 의 사용 에 대한 자세 한 설명
<?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());
}
}
}
사용 예:이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.