public static string DecryptString(string str, string key)
{
//DESCryptoServiceProviderオブジェクトの作成
var des = new System.Security.Cryptography.DESCryptoServiceProvider();
// 共有キーと初期化ベクタを決定
// パスワードをバイト配列にする
var bytesKey = System.Text.Encoding.UTF8.GetBytes(key);
// 共有キーと初期化ベクタを設定
des.Key = ResizeBytesArray(bytesKey, des.Key.Length);
des.IV = ResizeBytesArray(bytesKey, des.IV.Length);
// Base64で文字列をバイト配列に戻す
var bytesIn = System.Convert.FromBase64String(str);
// 暗号化されたデータを読み込むためのMemoryStream
var msIn = new System.IO.MemoryStream(bytesIn);
// DES復号化オブジェクトの作成
var desdecrypt = des.CreateDecryptor();
// 読み込むためのCryptoStreamの作成
var cryptStreem = new System.Security.Cryptography.CryptoStream(msIn, desdecrypt, System.Security.Cryptography.CryptoStreamMode.Read);
// 復号化されたデータを取得するためのStreamReader
var srOut = new System.IO.StreamReader(cryptStreem, System.Text.Encoding.UTF8);
// 復号化されたデータを取得する
var result = srOut.ReadToEnd();
// 閉じる
srOut.Close();
cryptStreem.Close();
msIn.Close();
return result;
}