Ejemplo n.º 1
0
        /// <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));
        }
Ejemplo n.º 2
0
        /// <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)));
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
 /// <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));
 }
Ejemplo n.º 5
0
 /// <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));
 }
Ejemplo n.º 6
0
 /// <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));
 }