示例#1
0
 /// <summary>文字列のハッシュ値を計算して返す。</summary>
 /// <param name="sourceString">文字列</param>
 /// <param name="eha">ハッシュ・アルゴリズム列挙型</param>
 /// <returns>ハッシュ値(文字列)</returns>
 public static string GetHashString(string sourceString, EnumHashAlgorithm eha)
 {
     // ハッシュ(Base64)
     return(CustomEncode.ToBase64String(
                GetHash.GetHashBytes(
                    CustomEncode.StringToByte(sourceString, CustomEncode.UTF_8), eha)));
 }
        /// <summary>constructor</summary>
        /// <param name="rsNNN">JWS_RSA.RS</param>
        public RsaKeyConverter(JWS_RSA.RS rsNNN)
        {
            this.RSnnn = rsNNN;

            switch (this.RSnnn)
            {
            case JWS_RSA.RS._256:
                this.JwtConstRSnnn = JwtConst.RS256;
                this.HashName      = HashNameConst.SHA256;
                this.HashAlgorithm = EnumHashAlgorithm.SHA256_M;
                break;

            case JWS_RSA.RS._384:
                this.JwtConstRSnnn = JwtConst.RS384;
                this.HashName      = HashNameConst.SHA384;
                this.HashAlgorithm = EnumHashAlgorithm.SHA384_M;
                break;

            case JWS_RSA.RS._512:
                this.JwtConstRSnnn = JwtConst.RS512;
                this.HashName      = HashNameConst.SHA512;
                this.HashAlgorithm = EnumHashAlgorithm.SHA512_M;
                break;
            }
        }
示例#3
0
        /// <summary>バイト配列のハッシュ値を計算して返す。</summary>
        /// <param name="asb">バイト配列</param>
        /// <param name="eha">ハッシュ・アルゴリズム列挙型</param>
        /// <param name="stretchCount">ストレッチ回数</param>
        /// <returns>ハッシュ値(バイト配列)</returns>
        public static byte[] GetHashBytes(byte[] asb, EnumHashAlgorithm eha, int stretchCount)
        {
            byte[] temp = null;

#if NETSTD
            // NETSTDの場合の実装
            if (eha == EnumHashAlgorithm.RIPEMD160_M)
            {
                // ハッシュ値を計算して返す。
                temp = GetHash.GetDigestBytesByBC(asb, new RipeMD160Digest());

                for (int i = 0; i < stretchCount; i++)
                {
                    // stretchCountが1以上なら繰り返す。
                    temp = GetHash.GetDigestBytesByBC(temp, new RipeMD160Digest());
                }

                return(temp);
            }
#endif
            // ハッシュ(キー無し)サービスプロバイダを生成
            HashAlgorithm ha = HashAlgorithmCmnFunc.CreateHashAlgorithmSP(eha);

            // ハッシュ値を計算して返す。
            temp = ha.ComputeHash(asb);

            for (int i = 0; i < stretchCount; i++)
            {
                // stretchCountが1以上なら繰り返す。
                temp = ha.ComputeHash(temp);
            }

            ha.Clear(); // devps(1725)
            return(temp);
        }
        /// <summary>constructor</summary>
        /// <param name="esNNN">JWS_ECDSA.ES</param>
        public EccKeyConverter(JWS_ECDSA.ES esNNN)
        {
            this.ESnnn = esNNN;

            switch (this.ESnnn)
            {
            case JWS_ECDSA.ES._256:
                this.JwtConstESnnn      = JwtConst.ES256;
                this._hashAlgorithmName = HashAlgorithmName.SHA256;
                this.HashAlgorithm      = EnumHashAlgorithm.SHA256_M;
                break;

            case JWS_ECDSA.ES._384:
                this.JwtConstESnnn      = JwtConst.ES384;
                this._hashAlgorithmName = HashAlgorithmName.SHA384;
                this.HashAlgorithm      = EnumHashAlgorithm.SHA384_M;
                break;

            case JWS_ECDSA.ES._512:
                this.JwtConstESnnn      = JwtConst.ES512;
                this._hashAlgorithmName = HashAlgorithmName.SHA512;
                this.HashAlgorithm      = EnumHashAlgorithm.SHA512_M;
                break;
            }
        }
示例#5
0
        /// <summary>バイト配列のハッシュ値を計算して返す。</summary>
        /// <param name="asb">バイト配列</param>
        /// <param name="eha">ハッシュ・アルゴリズム列挙型</param>
        /// <returns>ハッシュ値(バイト配列)</returns>
        public static byte[] GetHashBytes(byte[] asb, EnumHashAlgorithm eha)
        {
            // ハッシュ(キー無し)サービスプロバイダを生成
            HashAlgorithm ha = GetHash.CreateHashAlgorithmServiceProvider(eha);

            // ハッシュ値を計算して返す。
            byte[] temp = ha.ComputeHash(asb);
            ha.Clear(); // devps(1725)
            return(temp);
        }
示例#6
0
        /// <summary>パスワードをDB保存する際には塩味パスワードとして保存する。</summary>
        /// <param name="rawPasswd">ユーザが入力した生のパスワード</param>
        /// <param name="eha">ハッシュ・アルゴリズム列挙型</param>
        /// <param name="saltLength">ソルトの文字列長</param>
        /// <returns>塩味パスワード</returns>
        public static string GetSaltedPasswd(string rawPasswd, EnumHashAlgorithm eha, int saltLength)
        {
            // ランダム・ソルト文字列を生成(区切り記号は含まなくても良い)
            string salt = Membership.GeneratePassword(saltLength, 0);

            // 塩味パスワード(文字列)を生成して返す。
            return(salt + GetHash.GetHashString(salt + rawPasswd, eha));

            // バイト配列仕様は、フィールドが文字列の可能性が高いので辞めた。
        }
示例#7
0
        /// <summary>
        /// Password entered by the userをDB保存する際、
        /// Salted and hashed passwordとして保存する必要がある。
        /// </summary>
        /// <param name="rawPassword">>Password entered by the user.</param>
        /// <param name="eha">ハッシュ・アルゴリズム列挙型</param>
        /// <param name="saltLength">ソルトの文字列長</param>
        /// <param name="stretchCount">ストレッチ回数</param>
        /// <returns>Salted and hashed password.</returns>
        public static string GetSaltedPassword(string rawPassword, EnumHashAlgorithm eha, int saltLength, int stretchCount)
        {
            // ランダム・ソルト文字列を生成(区切り記号は含まなくても良い)
            string salt = GetPassword.Generate(saltLength, 0); //Membership.GeneratePassword(saltLength, 0);

            // Salted and hashed password(文字列)を生成して返す。
            return
                (CustomEncode.ToBase64String(CustomEncode.StringToByte(salt, CustomEncode.UTF_8))
                 + "." + CustomEncode.ToBase64String(CustomEncode.StringToByte(stretchCount.ToString(), CustomEncode.UTF_8))
                 + "." + CustomEncode.ToBase64String(CustomEncode.StringToByte(GetHash.GetHashString(salt + rawPassword, eha, stretchCount), CustomEncode.UTF_8)));
        }
示例#8
0
        /// <summary>パスワードを比較して認証する。</summary>
        /// <param name="rawPasswd">ユーザが入力した生のパスワード</param>
        /// <param name="saltedPasswd">塩味パスワード</param>
        /// <param name="eha">ハッシュ・アルゴリズム列挙型</param>
        /// <param name="saltLength">ソルトの文字列長</param>
        /// <returns>
        /// true:パスワードは一致した。
        /// false:パスワードは一致しない。
        /// </returns>
        public static bool EqualSaltedPasswd(string rawPasswd, string saltedPasswd, EnumHashAlgorithm eha, int saltLength)
        {
            // ソルト部分を取得
            string salt = saltedPasswd.Substring(0, saltLength);

            // 引数のsaltedPasswdと、rawPasswdから自作したsaltedPasswdを比較
            if (saltedPasswd == salt + GetHash.GetHashString(salt + rawPasswd, eha))
            {
                // 一致した。
                return(true);
            }
            else
            {
                // 一致しなかった。
                return(false);
            }
        }
示例#9
0
        /// <summary>バイト配列のハッシュ値を計算して返す。</summary>
        /// <param name="asb">バイト配列</param>
        /// <param name="eha">ハッシュ・アルゴリズム列挙型</param>
        /// <param name="stretchCount">ストレッチ回数</param>
        /// <returns>ハッシュ値(バイト配列)</returns>
        public static byte[] GetHashBytes(byte[] asb, EnumHashAlgorithm eha, int stretchCount)
        {
            // ハッシュ(キー無し)サービスプロバイダを生成
            HashAlgorithm ha = GetHash.CreateHashAlgorithmServiceProvider(eha);

            // ハッシュ値を計算して返す。
            byte[] temp = ha.ComputeHash(asb);

            for (int i = 0; i < stretchCount; i++)
            {
                // stretchCountが1以上なら繰り返す。
                temp = ha.ComputeHash(temp);
            }

            ha.Clear(); // devps(1725)
            return(temp);
        }
示例#10
0
        /// <summary>ハッシュ(キー無し)サービスプロバイダの生成</summary>
        /// <param name="eha">ハッシュ(キー無し)サービスプロバイダの列挙型</param>
        /// <returns>ハッシュ(キー無し)サービスプロバイダ</returns>
        private static HashAlgorithm CreateHashAlgorithmServiceProvider(EnumHashAlgorithm eha)
        {
            // ハッシュ(キー無し)サービスプロバイダ
            HashAlgorithm ha = null;

            if (eha == EnumHashAlgorithm.Default)
            {
                // 既定の暗号化サービスプロバイダ
                ha = HashAlgorithm.Create(); // devps(1703)
            }
            else if (eha == EnumHashAlgorithm.MD5CryptoServiceProvider)
            {
                // MD5CryptoServiceProviderサービスプロバイダ
                ha = MD5CryptoServiceProvider.Create(); // devps(1703)
            }
            else if (eha == EnumHashAlgorithm.SHA1CryptoServiceProvider)
            {
                // SHA1CryptoServiceProviderサービスプロバイダ
                ha = SHA1CryptoServiceProvider.Create(); // devps(1703)
            }
            else if (eha == EnumHashAlgorithm.SHA1Managed)
            {
                // SHA1Managedサービスプロバイダ
                ha = SHA1Managed.Create(); // devps(1703)
            }
            else if (eha == EnumHashAlgorithm.SHA256Managed)
            {
                // SHA256Managedサービスプロバイダ
                ha = SHA256Managed.Create(); // devps(1703)
            }
            else if (eha == EnumHashAlgorithm.SHA384Managed)
            {
                // SHA384Managedサービスプロバイダ
                ha = SHA384Managed.Create(); // devps(1703)
            }
            else if (eha == EnumHashAlgorithm.SHA512Managed)
            {
                // SHA512Managedサービスプロバイダ
                ha = SHA512Managed.Create(); // devps(1703)
            }

            return(ha);
        }
示例#11
0
        public void GetSaltedPasswdTest(string rawPwd, EnumHashAlgorithm eha, int saltLength)
        {
            try
            {
                // Get the Salt password using the components of touryo.
                string saltedPasswd = GetHash.GetSaltedPasswd(rawPwd, eha, saltLength);

                // Check salt password to see if they match.
                Assert.IsTrue(GetHash.EqualSaltedPasswd(rawPwd, saltedPasswd, eha, saltLength));

                // (Just in case) Salt length is different, make sure that the salt passwords do not match.
                Assert.IsFalse(GetHash.EqualSaltedPasswd(rawPwd, saltedPasswd, eha, saltLength + 1));
            }
            catch (Exception ex)
            {
                // Print a stack trace when an exception occurs.
                Console.WriteLine(ex.StackTrace);
                throw;
            }
        }
示例#12
0
        [TestCase(null, 999, ExpectedException = typeof(ArgumentNullException), TestName = "TestID-032A")]       // The encryption method that is not defined
        public void EncryptStringTest(string sourceString, EnumHashAlgorithm eha)
        {
            try
            {
                // Get the hash value using the components of touryo.
                string hashString = GetHash.GetHashString(sourceString, eha);

                // Using the components of touryo, and get the hash value again.
                string hashString2 = GetHash.GetHashString(sourceString, eha);

                // Check the hash value.
                Assert.AreNotEqual(sourceString, hashString);
                Assert.AreNotEqual(sourceString, hashString2);
                Assert.AreEqual(hashString, hashString2);
            }
            catch (Exception ex)
            {
                // Print a stack trace when an exception occurs.
                Console.WriteLine(ex.StackTrace);
                throw;
            }
        }
示例#13
0
文件: GetHash.cs 项目: krt/OpenTouryo
        /// <summary>パスワードを比較して認証する。</summary>
        /// <param name="rawPasswd">ユーザが入力した生のパスワード</param>
        /// <param name="saltedPasswd">塩味パスワード</param>
        /// <param name="eha">ハッシュ・アルゴリズム列挙型</param>
        /// <param name="saltLength">ソルトの文字列長</param>
        /// <returns>
        /// true:パスワードは一致した。
        /// false:パスワードは一致しない。
        /// </returns>
        public static bool EqualSaltedPasswd(string rawPasswd, string saltedPasswd, EnumHashAlgorithm eha, int saltLength)
        {
            // ソルト部分を取得
            string salt = saltedPasswd.Substring(0, saltLength);

            // 引数のsaltedPasswdと、rawPasswdから自作したsaltedPasswdを比較
            if (saltedPasswd == salt + GetHash.GetHashString(salt + rawPasswd, eha))
            {
                // 一致した。
                return true;
            }
            else
            {
                // 一致しなかった。
                return false;
            }
        }
示例#14
0
        /// <summary>パスワードを比較して認証する。</summary>
        /// <param name="rawPassword">Password entered by the user.</param>
        /// <param name="saltedPassword">Salted and hashed password.</param>
        /// <param name="eha">ハッシュ・アルゴリズム列挙型</param>
        /// <returns>
        /// true:パスワードは一致した。
        /// false:パスワードは一致しない。
        /// </returns>
        public static bool EqualSaltedPassword(string rawPassword, string saltedPassword, EnumHashAlgorithm eha)
        {
            // ソルト部分を取得
            string[] temp           = saltedPassword.Split('.');
            string   salt           = CustomEncode.ByteToString(CustomEncode.FromBase64String(temp[0]), CustomEncode.UTF_8);
            int      stretchCount   = int.Parse(CustomEncode.ByteToString(CustomEncode.FromBase64String(temp[1]), CustomEncode.UTF_8));
            string   hashedPassword = CustomEncode.ByteToString(CustomEncode.FromBase64String(temp[2]), CustomEncode.UTF_8);

            // 引数のsaltedPasswordと、rawPasswordから自作したsaltedPasswordを比較
            if (hashedPassword == GetHash.GetHashString(salt + rawPassword, eha, stretchCount))
            {
                // 一致した。
                return(true);
            }
            else
            {
                // 一致しなかった。
                return(false);
            }
        }
示例#15
0
文件: GetHash.cs 项目: krt/OpenTouryo
 /// <summary>文字列のハッシュ値を計算して返す。</summary>
 /// <param name="sourceString">文字列</param>
 /// <param name="eha">ハッシュ・アルゴリズム列挙型</param>
 /// <returns>ハッシュ値(文字列)</returns>
 public static string GetHashString(string sourceString, EnumHashAlgorithm eha)
 {
     // ハッシュ(Base64)
     return CustomEncode.ToBase64String(
         GetHash.GetHashBytes(
             CustomEncode.StringToByte(sourceString, CustomEncode.UTF_8), eha));
 }
示例#16
0
 /// <summary>
 /// Password entered by the userをDB保存する際、
 /// Salted and hashed passwordとして保存する必要がある。
 /// </summary>
 /// <param name="rawPassword">>Password entered by the user.</param>
 /// <param name="eha">ハッシュ・アルゴリズム列挙型</param>
 /// <param name="saltLength">ソルトの文字列長</param>
 /// <returns>Salted and hashed password.</returns>
 /// <see ref="http://www.atmarkit.co.jp/ait/articles/1110/06/news154_2.html"/>
 public static string GetSaltedPassword(string rawPassword, EnumHashAlgorithm eha, int saltLength)
 {
     // overloadへ
     return(GetPasswordHashV2.GetSaltedPassword(rawPassword, eha, saltLength, 1));
 }
示例#17
0
文件: GetHash.cs 项目: krt/OpenTouryo
        /// <summary>ハッシュ(キー無し)サービスプロバイダの生成</summary>
        /// <param name="eha">ハッシュ(キー無し)サービスプロバイダの列挙型</param>
        /// <returns>ハッシュ(キー無し)サービスプロバイダ</returns>
        private static HashAlgorithm CreateHashAlgorithmServiceProvider(EnumHashAlgorithm eha)
        {
            // ハッシュ(キー無し)サービスプロバイダ
            HashAlgorithm ha = null;

            if (eha == EnumHashAlgorithm.Default)
            {
                // 既定の暗号化サービスプロバイダ
                ha = HashAlgorithm.Create(); // devps(1703)
            }
            else if (eha == EnumHashAlgorithm.MD5CryptoServiceProvider)
            {
                // MD5CryptoServiceProviderサービスプロバイダ
                ha = MD5CryptoServiceProvider.Create(); // devps(1703)
            }
            else if (eha == EnumHashAlgorithm.SHA1CryptoServiceProvider)
            {
                // SHA1CryptoServiceProviderサービスプロバイダ
                ha = SHA1CryptoServiceProvider.Create(); // devps(1703)
            }
            else if (eha == EnumHashAlgorithm.SHA1Managed)
            {
                // SHA1Managedサービスプロバイダ
                ha = SHA1Managed.Create(); // devps(1703)
            }
            else if (eha == EnumHashAlgorithm.SHA256Managed)
            {
                // SHA256Managedサービスプロバイダ
                ha = SHA256Managed.Create(); // devps(1703)
            }
            else if (eha == EnumHashAlgorithm.SHA384Managed)
            {
                // SHA384Managedサービスプロバイダ
                ha = SHA384Managed.Create(); // devps(1703)
            }
            else if (eha == EnumHashAlgorithm.SHA512Managed)
            {
                // SHA512Managedサービスプロバイダ
                ha = SHA512Managed.Create(); // devps(1703)
            }

            return ha;
        }
示例#18
0
文件: GetHash.cs 项目: krt/OpenTouryo
        /// <summary>バイト配列のハッシュ値を計算して返す。</summary>
        /// <param name="asb">バイト配列</param>
        /// <param name="eha">ハッシュ・アルゴリズム列挙型</param>
        /// <returns>ハッシュ値(バイト配列)</returns>
        public static byte[] GetHashBytes(byte[] asb, EnumHashAlgorithm eha)
        {
            // ハッシュ(キー無し)サービスプロバイダを生成
            HashAlgorithm ha = GetHash.CreateHashAlgorithmServiceProvider(eha);

            // ハッシュ値を計算して返す。
            byte[] temp = ha.ComputeHash(asb);
            ha.Clear(); // devps(1725)
            return temp;
        }
示例#19
0
 /// <summary>バイト配列のハッシュ値を計算して返す。</summary>
 /// <param name="asb">バイト配列</param>
 /// <param name="eha">ハッシュ・アルゴリズム列挙型</param>
 /// <returns>ハッシュ値(バイト配列)</returns>
 public static byte[] GetHashBytes(byte[] asb, EnumHashAlgorithm eha)
 {
     // overloadへ
     return(GetHash.GetHashBytes(asb, eha, 1));
 }
示例#20
0
 /// <summary>文字列のハッシュ値を計算して返す。</summary>
 /// <param name="sourceString">文字列</param>
 /// <param name="eha">ハッシュ・アルゴリズム列挙型</param>
 /// <param name="stretchCount">ストレッチ回数</param>
 /// <returns>ハッシュ値(文字列)</returns>
 public static string GetHashString(string sourceString, EnumHashAlgorithm eha, int stretchCount)
 {
     return(CustomEncode.ToBase64String(
                GetHash.GetHashBytes(
                    CustomEncode.StringToByte(sourceString, CustomEncode.UTF_8), eha, stretchCount)));
 }
示例#21
0
 /// <summary>文字列のハッシュ値を計算して返す。</summary>
 /// <param name="sourceString">文字列</param>
 /// <param name="eha">ハッシュ・アルゴリズム列挙型</param>
 /// <returns>ハッシュ値(文字列)</returns>
 public static string GetHashString(string sourceString, EnumHashAlgorithm eha)
 {
     // overloadへ
     return(GetHash.GetHashString(sourceString, eha, 1));
 }
示例#22
0
文件: GetHash.cs 项目: krt/OpenTouryo
        /// <summary>パスワードをDB保存する際には塩味パスワードとして保存する。</summary>
        /// <param name="rawPasswd">ユーザが入力した生のパスワード</param>
        /// <param name="eha">ハッシュ・アルゴリズム列挙型</param>
        /// <param name="saltLength">ソルトの文字列長</param>
        /// <returns>塩味パスワード</returns>
        public static string GetSaltedPasswd(string rawPasswd, EnumHashAlgorithm eha, int saltLength)
        {
            // ランダム・ソルト文字列を生成(区切り記号は含まなくても良い)
            string salt = Membership.GeneratePassword(saltLength, 0);
            // 塩味パスワード(文字列)を生成して返す。
            return salt + GetHash.GetHashString(salt + rawPasswd, eha);

            // バイト配列仕様は、フィールドが文字列の可能性が高いので辞めた。
        }
示例#23
0
        [TestCase("TestID-032A", null, 999, ExpectedException = typeof(ArgumentNullException))]            // The encryption method that is not defined
        public void EncryptStringTest(string testCaseID, string sourceString, EnumHashAlgorithm eha)
        {
            try
            {
                // Get the hash value using the components of touryo. 
                string hashString = GetHash.GetHashString(sourceString, eha);

                // Using the components of touryo, and get the hash value again.
                string hashString2 = GetHash.GetHashString(sourceString, eha);

                // Check the hash value.
                Assert.AreNotEqual(sourceString, hashString);
                Assert.AreNotEqual(sourceString, hashString2);
                Assert.AreEqual(hashString, hashString2);
            }
            catch (Exception ex)
            {
                // Print a stack trace when an exception occurs.
                Console.WriteLine(testCaseID + ":" + ex.StackTrace);
                throw;
            }
        }
示例#24
0
        public void GetSaltedPasswdTest(string testCaseID, string rawPwd, EnumHashAlgorithm eha, int saltLength)
        {
            try
            {
                // Get the Salt password using the components of touryo. 
                string saltedPasswd = GetHash.GetSaltedPasswd(rawPwd, eha, saltLength);

                // Check salt password to see if they match.
                Assert.IsTrue(GetHash.EqualSaltedPasswd(rawPwd, saltedPasswd, eha, saltLength));

                // (Just in case) Salt length is different, make sure that the salt passwords do not match.
                Assert.IsFalse(GetHash.EqualSaltedPasswd(rawPwd, saltedPasswd, eha, saltLength + 1));
            }
            catch (Exception ex)
            {
                // Print a stack trace when an exception occurs.
                Console.WriteLine(testCaseID + ":" + ex.StackTrace);
                throw;
            }
        }
示例#25
0
        /// <summary>ハッシュ(キー無し)サービスプロバイダの生成</summary>
        /// <param name="eha">ハッシュ(キー無し)サービスプロバイダの列挙型</param>
        /// <returns>ハッシュ(キー無し)サービスプロバイダ</returns>
        /// <remarks>
        /// EnumHashAlgorithmから、HashAlgorithmを生成するために追加。
        /// HashAlgorithm.Create(HashNameConst.SHA256) は .NET Core 2 で動作せず。
        /// - KeyedHashAlgorithm.Create("HMACSHA1") throw PNSE (on .NET Core 2
        ///   https://github.com/dotnet/standard/issues/530#issuecomment-375043416
        /// </remarks>
        public static HashAlgorithm CreateHashAlgorithmSP(EnumHashAlgorithm eha)
        {
            // ハッシュ(キー無し)サービスプロバイダ
            HashAlgorithm ha = null;

            if (eha == EnumHashAlgorithm.Default)
            {
                // 既定の暗号化サービスプロバイダ
                ha = HashAlgorithmCmnFunc.GetHashAlgorithmFromNameString(); // devps(1703)
            }

            #region MD5
            else if (eha == EnumHashAlgorithm.MD5_CSP)
            {
                // MD5CryptoServiceProviderサービスプロバイダ
                ha = MD5CryptoServiceProvider.Create(); // devps(1703)
            }
#if NETSTD
#else
            else if (eha == EnumHashAlgorithm.MD5_CNG)
            {
                // MD5Cngサービスプロバイダ
                ha = MD5Cng.Create(); // devps(1703)
            }
#endif
            #endregion

            #region RIPEMD160
            else if (eha == EnumHashAlgorithm.RIPEMD160_M)
            {
#if NETSTD
                ha = null; // BouncyCastleを使用する。
#else
                // RIPEMD160Managedサービスプロバイダ
                ha = RIPEMD160Managed.Create(); // devps(1703)
#endif
            }
            #endregion

            #region SHA1
            else if (eha == EnumHashAlgorithm.SHA1_CSP)
            {
                // SHA1CryptoServiceProviderサービスプロバイダ
                ha = SHA1CryptoServiceProvider.Create(); // devps(1703)
            }
#if NETSTD
#else
            else if (eha == EnumHashAlgorithm.SHA1_CNG)
            {
                // SHA1Cngサービスプロバイダ
                ha = SHA1Cng.Create(); // devps(1703)
            }
#endif
            else if (eha == EnumHashAlgorithm.SHA1_M)
            {
                // SHA1Managedサービスプロバイダ
                ha = SHA1Managed.Create(); // devps(1703)
            }
            #endregion

            #region SHA256
            else if (eha == EnumHashAlgorithm.SHA256_CSP)
            {
                // SHA256CryptoServiceProviderサービスプロバイダ
                ha = SHA256CryptoServiceProvider.Create(); // devps(1703)
            }
#if NETSTD
#else
            else if (eha == EnumHashAlgorithm.SHA256_CNG)
            {
                // SHA256Cngサービスプロバイダ
                ha = SHA256Cng.Create(); // devps(1703)
            }
#endif
            else if (eha == EnumHashAlgorithm.SHA256_M)
            {
                // SHA256Managedサービスプロバイダ
                ha = SHA256Managed.Create(); // devps(1703)
            }
            #endregion

            #region SHA384
            else if (eha == EnumHashAlgorithm.SHA384_CSP)
            {
                // SHA384CryptoServiceProviderサービスプロバイダ
                ha = SHA384CryptoServiceProvider.Create(); // devps(1703)
            }
#if NETSTD
#else
            else if (eha == EnumHashAlgorithm.SHA384_CNG)
            {
                // SHA384Cngサービスプロバイダ
                ha = SHA384Cng.Create(); // devps(1703)
            }
#endif
            else if (eha == EnumHashAlgorithm.SHA384_M)
            {
                // SHA384Managedサービスプロバイダ
                ha = SHA384Managed.Create(); // devps(1703)
            }
            #endregion

            #region SHA512
            else if (eha == EnumHashAlgorithm.SHA512_CSP)
            {
                // SHA512CryptoServiceProviderサービスプロバイダ
                ha = SHA512CryptoServiceProvider.Create(); // devps(1703)
            }
#if NETSTD
#else
            else if (eha == EnumHashAlgorithm.SHA512_CNG)
            {
                // SHA512Cngサービスプロバイダ
                ha = SHA512Cng.Create(); // devps(1703)
            }
#endif
            else if (eha == EnumHashAlgorithm.SHA512_M)
            {
                // SHA512Managedサービスプロバイダ
                ha = SHA512Managed.Create(); // devps(1703)
            }
            #endregion

            else
            {
                // 既定の暗号化サービスプロバイダ
                ha = HashAlgorithmCmnFunc.GetHashAlgorithmFromNameString(); // devps(1703)
            }

            return(ha);
        }