"/> ">

ホームページ  >  記事  >  バックエンド開発  >  Asp.net、C# の暗号化および復号化文字列

Asp.net、C# の暗号化および復号化文字列

巴扎黑
巴扎黑オリジナル
2016-12-20 16:01:411514ブラウズ

まず、次のコードを 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()); 
}
}
}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。