Пример #1
0
        /// <summary>
        /// 対称アルゴリズムによる
        /// 暗号化サービスプロバイダを生成
        /// </summary>
        /// <param name="esa">
        /// 対称アルゴリズムによる
        /// 暗号化サービスプロバイダの種類
        /// </param>
        /// <returns>
        /// 対称アルゴリズムによる
        /// 暗号化サービスプロバイダ
        /// </returns>
        private SymmetricAlgorithm CreateSymmetricAlgorithm(EnumSymmetricAlgorithm esa)
        {
            //esa = EnumSymmetricAlgorithm.AesManaged
            //    | EnumSymmetricAlgorithm.CipherMode_CBC
            //    | EnumSymmetricAlgorithm.PaddingMode_PKCS7;

            // CipherMode, PaddingMode指定の追加
            CipherMode  cm = 0;
            PaddingMode pm = 0;

            // CipherMode
            if (esa.HasFlag(EnumSymmetricAlgorithm.CipherMode_CBC))
            {
                cm = CipherMode.CBC;
            }
            else if (esa.HasFlag(EnumSymmetricAlgorithm.CipherMode_CFB))
            {
                cm = CipherMode.CFB;
            }
            else if (esa.HasFlag(EnumSymmetricAlgorithm.CipherMode_CTS))
            {
                cm = CipherMode.CTS;
            }
            else if (esa.HasFlag(EnumSymmetricAlgorithm.CipherMode_ECB))
            {
                cm = CipherMode.ECB;
            }
            else if (esa.HasFlag(EnumSymmetricAlgorithm.CipherMode_OFB))
            {
                cm = CipherMode.OFB;
            }

            // PaddingMode
            if (esa.HasFlag(EnumSymmetricAlgorithm.PaddingMode_None))
            {
                pm = PaddingMode.None;
            }
            else if (esa.HasFlag(EnumSymmetricAlgorithm.PaddingMode_Zeros))
            {
                pm = PaddingMode.Zeros;
            }
            else if (esa.HasFlag(EnumSymmetricAlgorithm.PaddingMode_ANSIX923))
            {
                pm = PaddingMode.ANSIX923;
            }
            else if (esa.HasFlag(EnumSymmetricAlgorithm.PaddingMode_ISO10126))
            {
                pm = PaddingMode.ISO10126;
            }
            else if (esa.HasFlag(EnumSymmetricAlgorithm.PaddingMode_PKCS7))
            {
                pm = PaddingMode.PKCS7;
            }

            return(CreateSymmetricAlgorithm(esa, cm, pm));
        }
Пример #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)));
        }
Пример #3
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));
        }
Пример #4
0
        /// <summary>
        /// 対称アルゴリズムによる
        /// 暗号化サービスプロバイダを生成
        /// </summary>
        /// <param name="esa">
        /// 対称アルゴリズムによる
        /// 暗号化サービスプロバイダの種類
        /// </param>
        /// <returns>
        /// 対称アルゴリズムによる
        /// 暗号化サービスプロバイダ
        /// </returns>
        private static SymmetricAlgorithm CreateSymmetricAlgorithm(EnumSymmetricAlgorithm esa)
        {
            SymmetricAlgorithm sa = null;

            // AesCryptoServiceProvider, AesManagedは.NET Framework 3.5からの提供。
            // 暗号化プロバイダ選択の優先順は、高い順に、Managed → CAPI(CSP) → CNG。
            // Aesは、ManagedがあるのでCAPI(CSP)のAesCryptoServiceProviderを削除。
            // サポート範囲の変更により、今後、CAPI(CSP)とCNGの優先順位の反転を検討。

            //if (esa == EnumSymmetricAlgorithm.AesCryptoServiceProvider)
            //{
            //    // AesCryptoServiceProviderサービスプロバイダ
            //    sa = AesCryptoServiceProvider.Create(); // devps(1703)
            //}
            //else
            if (esa == EnumSymmetricAlgorithm.AesManaged)
            {
                // AesManagedサービスプロバイダ
                sa = AesManaged.Create(); // devps(1703)
            }
            else if (esa == EnumSymmetricAlgorithm.DESCryptoServiceProvider)
            {
                // DESCryptoServiceProviderサービスプロバイダ
                sa = DESCryptoServiceProvider.Create(); // devps(1703)
            }
            else if (esa == EnumSymmetricAlgorithm.RC2CryptoServiceProvider)
            {
                // RC2CryptoServiceProviderサービスプロバイダ
                sa = RC2CryptoServiceProvider.Create(); // devps(1703)
            }
            else if (esa == EnumSymmetricAlgorithm.RijndaelManaged)
            {
                // RijndaelManagedサービスプロバイダ
                sa = RijndaelManaged.Create(); // devps(1703)
            }
            else if (esa == EnumSymmetricAlgorithm.TripleDESCryptoServiceProvider)
            {
                // TripleDESCryptoServiceProviderサービスプロバイダ
                sa = TripleDESCryptoServiceProvider.Create(); // devps(1703)
            }
            else
            {
                throw new ArgumentException(
                          PublicExceptionMessage.ARGUMENT_INJUSTICE, "EnumSymmetricAlgorithm esa");
            }

            return(sa);
        }
Пример #5
0
        /// <summary>
        /// 対称アルゴリズムによる
        /// 暗号化サービスプロバイダを生成
        /// </summary>
        /// <param name="esa">
        /// 対称アルゴリズムによる
        /// 暗号化サービスプロバイダの種類
        /// </param>
        /// <returns>
        /// 対称アルゴリズムによる
        /// 暗号化サービスプロバイダ
        /// </returns>
        private static SymmetricAlgorithm CreateSymmetricAlgorithm(EnumSymmetricAlgorithm esa)
        {
            SymmetricAlgorithm sa = null;

            // AesCryptoServiceProvider, AesManagedは3.5からの提供。

            if (esa == EnumSymmetricAlgorithm.AesCryptoServiceProvider)
            {
                // AesCryptoServiceProviderサービスプロバイダ
                sa = AesCryptoServiceProvider.Create(); // devps(1703)
            }
            else if (esa == EnumSymmetricAlgorithm.AesManaged)
            {
                // AesManagedサービスプロバイダ
                sa = AesManaged.Create(); // devps(1703)
            }
            else if (esa == EnumSymmetricAlgorithm.DESCryptoServiceProvider)
            {
                // DESCryptoServiceProviderサービスプロバイダ
                sa = DESCryptoServiceProvider.Create(); // devps(1703)
            }
            else if (esa == EnumSymmetricAlgorithm.RC2CryptoServiceProvider)
            {
                // RC2CryptoServiceProviderサービスプロバイダ
                sa = RC2CryptoServiceProvider.Create(); // devps(1703)
            }
            else if (esa == EnumSymmetricAlgorithm.RijndaelManaged)
            {
                // RijndaelManagedサービスプロバイダ
                sa = RijndaelManaged.Create(); // devps(1703)
            }
            else if (esa == EnumSymmetricAlgorithm.TripleDESCryptoServiceProvider)
            {
                // TripleDESCryptoServiceProviderサービスプロバイダ
                sa = TripleDESCryptoServiceProvider.Create(); // devps(1703)
            }
            else
            {
                throw new ArgumentException(
                          PublicExceptionMessage.ARGUMENT_INJUSTICE, "EnumSymmetricAlgorithm esa");
            }

            return(sa);
        }
Пример #6
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);
        }
Пример #7
0
        /// <summary>対称アルゴリズム暗号化サービスプロバイダ生成</summary>
        /// <param name="esa">EnumSymmetricAlgorithm</param>
        /// <param name="cm">CipherMode</param>
        /// <param name="pm">PaddingMode</param>
        /// <returns>SymmetricAlgorithm</returns>
        private SymmetricAlgorithm CreateSymmetricAlgorithm(EnumSymmetricAlgorithm esa, CipherMode cm, PaddingMode pm)
        {
            #region Constructor
            SymmetricAlgorithm sa = null;

            #region Aes
            if (esa.HasFlag(EnumSymmetricAlgorithm.AES_CSP))
            {
                // AesCryptoServiceProviderサービスプロバイダ
                sa = AesCryptoServiceProvider.Create(); // devps(1703)
            }
            else if (esa.HasFlag(EnumSymmetricAlgorithm.AES_M))
            {
                // AesManagedサービスプロバイダ
                sa = AesManaged.Create(); // devps(1703)
            }
#if NET45 || NET46
#else
            else if (esa.HasFlag(EnumSymmetricAlgorithm.AES_CNG))
            {
                // AesCngサービスプロバイダ
                sa = AesCng.Create(); // devps(1703)
            }
#endif
            #endregion

            #region TripleDES
            else if (esa.HasFlag(EnumSymmetricAlgorithm.TDES_CSP))
            {
                // TripleDESCryptoServiceProviderサービスプロバイダ
                sa = TripleDESCryptoServiceProvider.Create(); // devps(1703)
            }

#if NET45 || NET46
#else
            else if (esa.HasFlag(EnumSymmetricAlgorithm.TDES_CNG))
            {
                // TripleDESCngサービスプロバイダ
                sa = TripleDESCng.Create(); // devps(1703)
            }
#endif
            #endregion

            #region Others
            else if (esa.HasFlag(EnumSymmetricAlgorithm.DES_CSP))
            {
                // DESCryptoServiceProviderサービスプロバイダ
                sa = DESCryptoServiceProvider.Create(); // devps(1703)
            }

            else if (esa.HasFlag(EnumSymmetricAlgorithm.RC2_CSP))
            {
                // RC2CryptoServiceProviderサービスプロバイダ
                sa = RC2CryptoServiceProvider.Create(); // devps(1703)
            }

            else if (esa.HasFlag(EnumSymmetricAlgorithm.Rijndael_M))
            {
                // RijndaelManagedサービスプロバイダ
                sa = RijndaelManaged.Create(); // devps(1703)
            }
            #endregion

            else
            {
                throw new ArgumentException(
                          PublicExceptionMessage.ARGUMENT_INCORRECT, "EnumSymmetricAlgorithm esa");
            }
            #endregion

            #region Options
            // cmが設定されている場合。
            if (cm != 0)
            {
                sa.Mode = cm;
            }

            // pmが設定されている場合。
            if (pm != 0)
            {
                sa.Padding = pm;
            }
            #endregion

            return(sa);
        }
Пример #8
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);
 }
Пример #9
0
 /// <summary>Constructor</summary>
 /// <param name="algorithm">対称アルゴリズム</param>
 /// <param name="salt">ソルト</param>
 /// <param name="stretching">ストレッチング</param>
 public SymmetricCryptography(EnumSymmetricAlgorithm algorithm, byte[] salt, int stretching)
 {
     this.Algorithm  = algorithm;
     this.Salt       = salt;
     this.Stretching = stretching;
 }
Пример #10
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));
 }
Пример #11
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));
        }
Пример #12
0
        public void EncryptStringTest(string testCaseID, string sourceString, string password, EnumSymmetricAlgorithm esa)
        {
            try
            {
                // Performs encryption using the components touryo.
                string encryptedString = SymmetricCryptography.EncryptString(sourceString, password, esa);

                // Performs decrypted using the components touryo.
                string decryptedString = SymmetricCryptography.DecryptString(encryptedString, password, esa);

                // Check whether it is decrypted into the original string.
                Assert.AreNotEqual(sourceString, encryptedString);
                Assert.AreEqual(sourceString, decryptedString);
            }
            catch (Exception ex)
            {
                // Print a stack trace when an exception occurs.
                Console.WriteLine(testCaseID + ":" + ex.StackTrace);
                throw;
            }
        }
Пример #13
0
 /// <summary>Constructor</summary>
 /// <param name="algorithm">対称アルゴリズム</param>
 public SymmetricCryptography(EnumSymmetricAlgorithm algorithm) :
     this(algorithm, SymmetricCryptography.DefaultSalt)
 {
 }
Пример #14
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));
 }
Пример #15
0
        /// <summary>
        /// 対称アルゴリズムによる
        /// 暗号化サービスプロバイダを生成
        /// </summary>
        /// <param name="esa">
        /// 対称アルゴリズムによる
        /// 暗号化サービスプロバイダの種類
        /// </param>
        /// <returns>
        /// 対称アルゴリズムによる
        /// 暗号化サービスプロバイダ
        /// </returns>
        private static SymmetricAlgorithm CreateSymmetricAlgorithm(EnumSymmetricAlgorithm esa)
        {
            SymmetricAlgorithm sa = null;

            // AesCryptoServiceProvider, AesManagedは3.5からの提供。

            if (esa == EnumSymmetricAlgorithm.AesCryptoServiceProvider)
            {
                // AesCryptoServiceProviderサービスプロバイダ
                sa = AesCryptoServiceProvider.Create(); // devps(1703)
            }
            else if (esa == EnumSymmetricAlgorithm.AesManaged)
            {
                // AesManagedサービスプロバイダ
                sa = AesManaged.Create(); // devps(1703)
            }
            else if (esa == EnumSymmetricAlgorithm.DESCryptoServiceProvider)
            {
                // DESCryptoServiceProviderサービスプロバイダ
                sa = DESCryptoServiceProvider.Create(); // devps(1703)
            }
            else if (esa == EnumSymmetricAlgorithm.RC2CryptoServiceProvider)
            {
                // RC2CryptoServiceProviderサービスプロバイダ
                sa = RC2CryptoServiceProvider.Create(); // devps(1703)
            }
            else if (esa == EnumSymmetricAlgorithm.RijndaelManaged)
            {
                // RijndaelManagedサービスプロバイダ
                sa = RijndaelManaged.Create(); // devps(1703)
            }
            else if (esa == EnumSymmetricAlgorithm.TripleDESCryptoServiceProvider)
            {
                // TripleDESCryptoServiceProviderサービスプロバイダ
                sa = TripleDESCryptoServiceProvider.Create(); // devps(1703)
            }
            else
            {
                throw new ArgumentException(
                    PublicExceptionMessage.ARGUMENT_INJUSTICE, "EnumSymmetricAlgorithm esa");
            }

            return sa;
        }
Пример #16
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;
        }
Пример #17
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);
 }
Пример #18
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);
        }
Пример #19
0
 /// <summary>Constructor</summary>
 /// <param name="algorithm">対称アルゴリズム</param>
 /// <param name="salt">ソルト</param>
 public SymmetricCryptography(EnumSymmetricAlgorithm algorithm, byte[] salt) :
     this(algorithm, salt, SymmetricCryptography.DefaultStretching)
 {
 }
Пример #20
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));
 }
Пример #21
0
        public void EncryptBytesTest2(string testCaseID, byte[] sourceBytes, string password, EnumSymmetricAlgorithm esa, byte[] salt)
        {
            try
            {
                // Performs encryption using the components of touryo.
                byte[] encryptedBytes = SymmetricCryptography.EncryptBytes(sourceBytes, password, esa, salt);

                // Performs decrypted using the components of touryo.
                byte[] decryptedBytes = SymmetricCryptography.DecryptBytes(encryptedBytes, password, esa, salt);

                // Check whether it is decrypted into the original string.
                Assert.AreNotEqual(sourceBytes, encryptedBytes);
                Assert.AreEqual(sourceBytes, decryptedBytes);
            }
            catch (Exception ex)
            {
                // Print a stack trace when an exception occurs.
                Console.WriteLine(testCaseID + ":" + ex.StackTrace);
                throw;
            }
        }
Пример #22
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);
 }