[OS/UBUNTU] openssl 명령 : SHA256 해시키 생성하기
■ openssl 명령을 사용해 SHA256 해시키를 생성하는 방법을 보여준다. 1. CTRL + ALT + T 키를 눌러서 [터미널]을 실행한다. 2. [터미널]에서 아래
■ openssl 명령을 사용해 SHA256 해시키를 생성하는 방법을 보여준다. 1. CTRL + ALT + T 키를 눌러서 [터미널]을 실행한다. 2. [터미널]에서 아래
■ openssl 명령을 사용해 디지털 서명을 검증하는 방법을 보여준다. 1. CTRL + ALT + T 키를 눌러서 [터미널]을 실행한다. 2. [터미널]에서 아래
■ openssl 명령을 사용해 디지털 서명하는 방법을 보여준다. 1. CTRL + ALT + T 키를 눌러서 [터미널]을 실행한다. 2. [터미널]에서 아래 명령을
■ SHA256Managed 클래스의 ComputeHash 메소드를 사용해 해시값을 구하는 방법을 보여준다. ▶ HashHelper.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
using System; using System.Security.Cryptography; using System.Text; namespace TestProject { /// <summary> /// 해시 헬퍼 /// </summary> public class HashHelper { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Public #region 솔트 생성하기 - CreateSalt(size) /// <summary> /// 솔트 생성하기 /// </summary> /// <param name="size">크기</param> /// <returns>솔트</returns> public static string CreateSalt(int size) { RNGCryptoServiceProvider provider = new RNGCryptoServiceProvider(); byte[] targetByteArray = new byte[size]; provider.GetBytes(targetByteArray); return Convert.ToBase64String(targetByteArray); } #endregion #region 해시 생성하기 - CreateHash(source, salt) /// <summary> /// 해시 생성하기 /// </summary> /// <param name="source">소스 문자열</param> /// <param name="salt">솔트</param> /// <returns>해시</returns> public static string CreateHash(string source, string salt) { byte[] sourceByteArray = Encoding.UTF8.GetBytes(source + salt); SHA256Managed sha256Managed = new SHA256Managed(); byte[] hashByteArray = sha256Managed.ComputeHash(sourceByteArray); return Convert.ToBase64String(hashByteArray); } #endregion #region 해시 검증하기 - VerifyHash(source, hash, salt) /// <summary> /// 해시 검증하기 /// </summary> /// <param name="source">소스 문자열</param> /// <param name="hash">해시</param> /// <param name="salt">솔트</param> /// <returns>해시 검증 결과</returns> public static bool VerifyHash(string source, string hash, string salt) { string newHash = CreateHash(source, salt); return newHash.Equals(hash); } #endregion } } |
▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
using System; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { string password = "test1234"; string salt = HashHelper.CreateSalt(10); string passwordHash = HashHelper.CreateHash(password, salt); bool result = HashHelper.VerifyHash(password, passwordHash, salt); Console.WriteLine($"패스워드 : {password }"); Console.WriteLine($"솔트 : {salt }"); Console.WriteLine($"해시 패스워드 : {passwordHash}"); Console.WriteLine($"검증 결과 : {result }"); } #endregion } } |
TestProject.zip
■ SHA256Managed 클래스를 사용해 SHA256 해시값을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using System; using System.Text; using System.Security.Cryptography; #region SHA256 해시값 구하기 - GetSHA256Hash(plainText) /// <summary> /// SHA256 해시값 구하기 /// </summary> /// <param name="plainText">평문 텍스트</param> /// <returns>SHA256 해시값</returns> public string GetSHA256Hash(string plainText) { SHA256 sha = new SHA256Managed(); byte[] hashArray = sha.ComputeHash(Encoding.ASCII.GetBytes(plainText)); string hashText = Convert.ToBase64String(hashArray); return hashText; } #endregion |