C#:如何将字符串哈希到RIPEMD160中

时间:2016-09-29 09:20:13

标签: c# security hash

例如,密码为" Hello World",如何让它返回到RIPEMD160哈希字符串?它应该返回一个字符串:" a830d7beb04eb7549ce990fb7dc962e499a27230"。我已经在互联网上搜索了我的问题的答案,但是代码不是字符串,而是将文件加密到RIPEMD160。

1 个答案:

答案 0 :(得分:1)

好的,我已经知道问题的解决方案了。将字符串转换为字节,将其传递给RIPEMD160函数,创建StringBuilder并传递RIPEMD160函数的返回字节,将返回的StringBuilder转换为字符串,再次将其转换为小写。我为它创建了一个函数。这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Security.Cryptography;

namespace Password
{
    class Program
    {
        static void Main(string[] args)
        {
            string thePassword = "Hello World";
            string theHash = getHash(thePassword);
            Console.WriteLine("String: " + thePassword);
            Console.WriteLine("Encrypted Hash: " + theHash);
            Console.ReadKey(true);
        }

        static string getHash(string password)
        {
            // create a ripemd160 object
            RIPEMD160 r160 = RIPEMD160Managed.Create();
            // convert the string to byte
            byte[] myByte = System.Text.Encoding.ASCII.GetBytes(password);
            // compute the byte to RIPEMD160 hash
            byte[] encrypted = r160.ComputeHash(myByte);
            // create a new StringBuilder process the hash byte
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < encrypted.Length; i++)
            {
                sb.Append(encrypted[i].ToString("X2"));
            }
            // convert the StringBuilder to String and convert it to lower case and return it.
            return sb.ToString().ToLower();
        }
    }
}