sealed public class CryptoHelper
{
///
/// 指定された入力を暗号化します。
/// ///
入力.
///
key
///
iv
/// < returns>
public static string EncryptDes(string input, byte[] key, byte[] iv)
{
if (input == null || input.Length == 0)
return String.Empty;
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
MemoryStream ms = null;
CryptoStream encStream = null;
StreamWriter sw = null;
string result = St ring.Empty;
try
{
ms = new MemoryStream();
// メモリ ストリームと
// CSP DES キーを使用して CryptoStream を作成します。
//des.Mode = CipherMode.CBC;
//des.Padding = PaddingMode.PKCS7;
encStream = new CryptoStream(ms, des.CreateEncryptor(key, iv), CryptoStreamMode.Write);
// ストリームに文字列を書き込む StreamWriter を作成します
// sw = 新しい StreamWriter(encStream);
// プレーンテキストをストリームに書き込みます。
sw.Write(input);
sw.Flush();
encStream.FlushFinalBlock();
ms.Flush();
result = Convert.ToBase64String(ms .GetBuffer(), 0, Convert.ToInt32(ms.Length, CultureInfo.InvariantCulture));
}
finally
{
// オブジェクトを閉じる
if (sw != null)
sw.Close();
if ( encStream != null)
encStream.Close();
if (ms != null)
ms.Close();
}
// 暗号化を返しますed 文字列
結果を返します;
}
///
/// 指定された入力を復号化します。
/// ///
入力。
/ //
key
///
iv
///
public static string DecryptDes(string input, byte[] key, byte[] iv)
{
byte[]buffer;
try {buffer = Convert.FromBase64String(input); }
catch (System.ArgumentNullException) { return String.Empty; }
// 長さがゼロ、または 4 の偶数倍ではありません (その他の場合もいくつかあります)
catch (System.FormatException) { return String.Empty; }
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
MemoryStream ms = null;
CryptoStream encStream = null;
StreamReader sr = null;
string result = String.Empty;
try
{
ms = 新しい MemoryStream(バッファ) ;
// メモリ ストリームと
// CSP DES キーを使用して CryptoStream を作成します。
encStream = new CryptoStream(ms, des.CreateDecryptor(key, iv), CryptoStreamMode.Read);
// ストリームを読み取るための StreamReader を作成します。
sr = new StreamReader(encStream);
// ストリームを読む文字列として
result = sr.ReadToEnd();
}
finally
{
// オブジェクトを閉じる
if (sr != null)
sr.Close();
if (encStream != null)
encStream。 Close();
if (ms != null)
ms.Close();
}
return result;
}
}
//调用
string key = "abcdefgh";
string iv = " abcdefgh";
string msg="テスト文字列";
string rs1 = CryptoHelper.EncryptDes(msg, System.Text.Encoding.ASCII.GetBytes(key), System.Text.Encoding.ASCII.GetBytes(iv));
string rs2 = CryptoHelper.DecryptDes(rs1, System.Text.Encoding.ASCII.GetBytes(key), System.Text.Encoding.ASCII.GetBytes(iv));