Machineboy空

[Kata] Crack the PIN 본문

Computer/Coding Test

[Kata] Crack the PIN

안녕도라 2026. 1. 6. 13:47

문제요약

주어진 MD5 해시값과 일치하는 값을 생성하는 5자리 PIN을 출력하라!

  • 입력: MD5 해시값
  • 출력: 5자리 PIN

* 해시 : 사과(입력) → 믹서기에 갈기(해시 함수)   사과주스(해시 값)

* MD5 : 해시 함수의 한 종류

* PIN : 보통 4~6자리의 짧은 숫자 비밀번호

 

https://www.codewars.com/kata/5efae11e2d12df00331f91a6/train/csharp

 

Codewars - Achieve mastery through coding practice and developer mentorship

A coding practice website for all programming levels – Join a community of over 3 million developers and improve your coding skills in over 55 programming languages!

www.codewars.com


난이도

6 kyu


풀이 포인트

  • 브루트포스

00000 ~ 99999까지의 경우의 수와 모두 비교


REVIEW

 

해시 값과 해시 함수의 개념이 헷갈렸다.

 


CODE

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

public class CodeWars {
  public static string crack(string hash) {
    
    using(MD5 md5 = MD5.Create()){
      for(int i = 0; i <= 99999; i++){
        string pin = i.ToString("D5");
        byte[] inputBytes = Encoding.ASCII.GetBytes(pin);
        byte[] hashBytes = md5.ComputeHash(inputBytes);
        
        string md5Hash = BitConverter.ToString(hashBytes).Replace("-","").ToLower();
        
        if(md5Hash == hash) return pin;
      }
    }
    
    
    return "";
  }
}