Lập trình C# – Xây dựng các hàm băm SHA1 – SHA256 – SHA384 – SHA512

Rate this post

Trong bài này, mình sẽ xây dựng những hàm băm SHA, cụ thể gồm có SHA1, SHA256, SHA384 và SHA512

Về SHA1 mình đã có đề cập đến trong bài viết: Lập trình C# – Mã hóa MD5 và SHA1

Những giải thuật băm này trong C# .NET đã hỗ trợ rất nhiều rồi, mình chỉ viết 1 class để thuận tiện hơn trong việc sử dụng.

using System.Security.Cryptography;
using System.Text;

namespace HashFunction.Hash
{
    public class SHA_Hash
    {
        public static string SHA1(string text)
        {
            SHA1Managed sha1 = new SHA1Managed();
            byte[] hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(text));
            StringBuilder hashSb = new StringBuilder();
            foreach (byte b in hash)
            {
                hashSb.Append(b.ToString("x2"));
            }
            return hashSb.ToString();
        }

        public static string SHA256(string text)
        {
            SHA256Managed sha256 = new SHA256Managed();
            StringBuilder hashSb = new StringBuilder();
            byte[] hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(text));
            foreach (byte b in hash)
            {
                hashSb.Append(b.ToString("x2"));
            }
            return hashSb.ToString();
        }

        public static string SHA384(string text)
        {
            SHA384Managed sha384 = new SHA384Managed();
            StringBuilder hashSb = new StringBuilder();
            byte[] hash = sha384.ComputeHash(Encoding.UTF8.GetBytes(text));
            foreach (byte b in hash)
            {
                hashSb.Append(b.ToString("x2"));
            }
            return hashSb.ToString();
        }

        public static string SHA512(string text)
        {
            SHA512Managed sha512 = new SHA512Managed();
            StringBuilder hashSb = new StringBuilder();
            byte[] hash = sha512.ComputeHash(Encoding.UTF8.GetBytes(text));
            foreach (byte b in hash)
            {
                hashSb.Append(b.ToString("x2"));
            }
            return hashSb.ToString();
        }
    }
}

Ví dụ về các hàm băm SHA1 – SHA256 – SHA384 – SHA512

using HashFunction.Hash;
using System;

namespace HashFunction
{
    class MainClass
    {
        public static void Main()
        {
            string text = "laptrinhcsharp";
            string str_sha256 = SHA_Hash.SHA256(text);
            string str_sha1 = SHA_Hash.SHA1(text);
            string str_sha384 = SHA_Hash.SHA384(text);
            string str_sha512 = SHA_Hash.SHA512(text);
            Console.WriteLine($"SHA256: {str_sha256}");
            Console.WriteLine($"SHA1: {str_sha1}");
            Console.WriteLine($"SHA384: {str_sha384}");
            Console.WriteLine($"SHA512: {str_sha512}");

            Console.ReadKey();
        }
    }
}

Và sau khi chạy ta có kết quả như sau:

  • SHA256: ffe14c43ab764390018604c33ccf8c9a3549dec0577b6f6a00ca5c29b2d15705
  • SHA1: b8fa0bb5ce8427bf5bef806f3d5344c9f57f4ada
  • SHA384: 6f8fd281515a60985ec58a6f0e2a81a345160179b0592b8700e15b54488db335fe9de7e450c4c9632e63ceaea8b1ab84
  • SHA512: 52e247d12dd46e32942b70497fa2a149f08e82e5d4c80b778d1f6b283cfea889dce8b41096849442738b16d5f7aafe2d6cf905187fff3fb5e6b6cae00a1827ce

Hits: 120

Leave a Reply