/// <summary>暗号化された文字列を復号化する</summary> /// <param name="sourceString">暗号化された文字列</param> /// <param name="password">暗号化に使用したパスワード</param> /// <param name="esa"> /// 対称アルゴリズムによる /// 暗号化サービスプロバイダの種類 /// </param> /// <param name="salt">ソルト</param> /// <param name="stretching">ストレッチング</param> /// <returns> /// 対称アルゴリズムで /// 復号化された文字列 /// </returns> public static string DecryptString( string sourceString, string password, EnumSymmetricAlgorithm esa, byte[] salt, int stretching) { // 暗号化文字列をbyte型配列に変換する(Base64) byte[] source = CustomEncode.FromBase64String(sourceString); // 復号化(UTF-8 Enc) return(CustomEncode.ByteToString( SymmetricCryptography.DecryptBytes(source, password, esa, salt, stretching), CustomEncode.UTF_8)); }
/// <summary>文字列を暗号化する</summary> /// <param name="sourceString">暗号化する文字列</param> /// <param name="password">暗号化に使用するパスワード</param> /// <param name="esa"> /// 対称アルゴリズムによる /// 暗号化サービスプロバイダの種類 /// </param> /// <param name="salt">ソルト</param> /// <param name="stretching">ストレッチング</param> /// <returns> /// 対称アルゴリズムで /// 暗号化された文字列 /// </returns> public static string EncryptString( string sourceString, string password, EnumSymmetricAlgorithm esa, byte[] salt, int stretching) { // 元文字列をbyte型配列に変換する(UTF-8 Enc) byte[] source = CustomEncode.StringToByte(sourceString, CustomEncode.UTF_8); // 暗号化(Base64) return(CustomEncode.ToBase64String( SymmetricCryptography.EncryptBytes(source, password, esa, salt, stretching))); }
/// <summary>暗号化されたバイト配列を復号化する</summary> /// <param name="source">暗号化されたバイト配列</param> /// <param name="password">暗号化に使用したパスワード</param> /// <param name="esa"> /// 対称アルゴリズムによる /// 暗号化サービスプロバイダの種類 /// </param> /// <param name="salt">ソルト</param> /// <param name="stretching">ストレッチング</param> /// <returns> /// 対称アルゴリズムで /// 復号化されたバイト配列 /// </returns> public static byte[] DecryptBytes( byte[] source, string password, EnumSymmetricAlgorithm esa, byte[] salt, int stretching) { // 暗号化サービスプロバイダを生成 SymmetricAlgorithm sa = SymmetricCryptography.CreateSymmetricAlgorithm(esa); // パスワードから共有キーと初期化ベクタを作成 byte[] key, iv; SymmetricCryptography.GenerateKeyFromPassword( password, sa.KeySize, out key, sa.BlockSize, out iv, salt, stretching); sa.Key = key; sa.IV = iv; // 復号化 byte[] temp = sa.CreateDecryptor().TransformFinalBlock(source, 0, source.Length); sa.Clear(); // devps(1725) return(temp); }
/// <summary>暗号化されたバイト配列を復号化する</summary> /// <param name="source">暗号化されたバイト配列</param> /// <param name="password">暗号化に使用したパスワード</param> /// <param name="esa"> /// 対称アルゴリズムによる /// 暗号化サービスプロバイダの種類 /// </param> /// <param name="salt">ソルト</param> /// <returns> /// 対称アルゴリズムで /// 復号化されたバイト配列 /// </returns> public static byte[] DecryptBytes( byte[] source, string password, EnumSymmetricAlgorithm esa, byte[] salt) { return(SymmetricCryptography.DecryptBytes( source, password, esa, salt, SymmetricCryptography.Stretching)); }
/// <summary>暗号化された文字列を復号化する</summary> /// <param name="sourceString">暗号化された文字列</param> /// <param name="password">暗号化に使用したパスワード</param> /// <param name="esa"> /// 対称アルゴリズムによる /// 暗号化サービスプロバイダの種類 /// </param> /// <param name="salt">ソルト</param> /// <returns> /// 対称アルゴリズムで /// 復号化された文字列 /// </returns> public static string DecryptString( string sourceString, string password, EnumSymmetricAlgorithm esa, byte[] salt) { return(SymmetricCryptography.DecryptString( sourceString, password, esa, salt, SymmetricCryptography.Stretching)); }
/// <summary>文字列を暗号化する</summary> /// <param name="sourceString">暗号化する文字列</param> /// <param name="password">暗号化に使用するパスワード</param> /// <param name="esa"> /// 対称アルゴリズムによる /// 暗号化サービスプロバイダの種類 /// </param> /// <returns> /// 対称アルゴリズムで /// 暗号化された文字列 /// </returns> public static string EncryptString( string sourceString, string password, EnumSymmetricAlgorithm esa) { return(SymmetricCryptography.EncryptString( sourceString, password, esa, SymmetricCryptography.Salt, SymmetricCryptography.Stretching)); }