"/> ">
ホームページ >バックエンド開発 >C#.Net チュートリアル >Asp.net、C# の暗号化および復号化文字列
まず、次のコードを web.config | app.config ファイルに追加します:
キー: 暗号化アルゴリズムのキー。
次に、暗号化ヘルパー クラスとして新しいクラス CryptoHelper を作成します。
まず、設定ファイルから IV とキーを取得する必要があります。基本的なコードは次のとおりです。 uPublic class cryptohelper {
// Private Readonly String IV = "SUFJCEMP/Te ="; e Readonly String key = "kipstoilgp6fl+3gxjvmsn4iajizybbt";
private readonly string Key = string.Empty;パブリック CryptoHelper ()
キー = ConfigurationManager.AppSettings [「キー」];
IV と Key を取得したら、暗号化サービスを提供する Service クラスを取得する必要があります。
ここでは、System.Security.Cryptography 名前空間の TripleDESCryptoServiceProvider クラスが使用されます。 TripleDeScryptoserviceProvider の取得方法は次のとおりです。
//// & lt;
/// 暗号化されたサービス カテゴリを取得します
/// & lt; ; /Return & GT; ()
TripleDESCryptoServiceProvider = new TripleDESCryptoServiceProvider();文字列(キー)
2 つの便利なメソッド
CreateEncryptor: 対称暗号化オブジェクト ICryptoTransform を作成します
CreateDecryptor: 対称復号化オブジェクト ICryptoTransform を作成します
Encryptor オブジェクトと Decryptor オブジェクトは、CryptoStream オブジェクトで使用できます。ストリームを暗号化および復号化します。
cryptoStream のコンストラクターは次のとおりです:
public CryptoStream(Stream stream, ICryptoTransform 変換, CryptoStreamMode モード);
変換オブジェクトを使用してストリームを変換します。完全な暗号化された文字列コードは次のとおりです。
/// & lt;
/// 暗号化された文字列を取得します
//// & gt; = "inputValue"> ent value。</param>パブリックストリングgetEncryptedValue(string inputValue){
triptedescryptoserviceprovider = this.getCryptoprovider();入力文字列のバイトを取得するための UTF8 エンコーディング。 T byte [] toencrypt = New Utf8enCoding ().Getbytes (inputValue); // バイトを変換フローに書き込みます。
cStream.Write(toEncrypt, 0, toEncrypt.Length); cStream.FlushFinalBlock(); cStream 。
byte[] ret = mStream.ToArray(); //暗号化されたバイトを 64 ビット形式にエンコードします。 C Return Convert.tobase64string (RET)
}
復号化方法は同様です:
/// & lt;
/// 復号値を取得します
/// & lt;/summary & gt;
// // 暗号化された文字列。 TripleDESCryptoServiceProvider プロバイダー = this。 GetCryptoProvider();
byte[] inputEquivalent = Convert.FromBase64String(inputValue);
//変換フローを作成します。
CryptoStream csDecrypt = new CryptoStream(msDecrypt,
csDecrypt.FlushFinalBlock(); csDecrypt.Close(( );
// 文字列を取得します。
return new UTF8Encoding().GetString(msDecrypt.ToArray());
}
完全なCryptoHelper代码如下:
システムを使用しています。
System.Collections.Generic を使用します。
System.Linq を使用する;
System.Text を使用します。
System.Security.Cryptography を使用します。
System.IO を使用する;
System.Configuration を使用します。
名前空間 WindowsFormsApplication1
{
public class CryptoHelper
{
//private readonly string IV = "SuFjcEmp/TE=";
private readonly string IV = string.Empty;
//プライベート読み取り専用文字列 Key = "KIPSToILGp6fl+3gXJvMsN4IajizYBBT";
プライベート読み取り専用文字列 Key = string.Empty;
public CryptoHelper()
{
IV = ConfigurationManager.AppSettings["IV"];
キー = ConfigurationManager.AppSettings["キー"];
}
///
/// 获取加密後の字符串
///
/// 输入值。
///
public string GetEncryptedValue(string inputValue)
{
TripleDESCryptoServiceProvider プロバイダー = 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();
// ストリームを閉じます。
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);
プロバイダーを返します。
}
///
/// 获取解密後の值
///
/// 经过加密後の文字列
///
public string GetDecryptedValue(string inputValue)
{
TripleDESCryptoServiceProvider プロバイダー = this.GetCryptoProvider();
byte[] inputEquivalent = Convert.FromBase64String(inputValue);
// 创建内存流保存解密後のデータ
MemoryStream msDecrypt = new MemoryStream();
// 创建转换流。
CryptoStream csDecrypt = new CryptoStream(msDecrypt,
provider.CreateDecryptor(),
CryptoStreamMode.書く);
csDecrypt.Write(inputEquivalent, 0, inputEquivalent.Length);
csDecrypt.FlushFinalBlock();
csDecrypt.Close();
//获取字符列。
return new UTF8Encoding().GetString(msDecrypt.ToArray());
}
}
}