해시 된 암호를 원래 문자열로 안정적으로 되돌릴 수 없습니다. 그러나 주어진 해시를 생성하는 유효한 입력을 재구성 할 수 있습니다. 다른 대답은 부분적으로 만 정확하고 해시의 상대적 보안을 이해하는 것이 중요하기 때문에이 대답을 제공하고 있습니다.
이것을 이해하려면 1 비트 해시 알고리즘을 사용한다고 가정합니다. 즉 해시가 1 또는 0입니다. 해시하는 모든 문자열의 절반은 "1"을 생성합니다. 이를 2 비트 해시로 확장하면 무작위로 해시하는 1 : 4 문자열이 주어진 해시 값을 생성합니다 (해시는 00, 01, 10, 11 이니셜로 0, 1, 2 또는 3이됩니다 ...).). 확장하면 128 비트가되고 hash collisions은 덜 자주 발생하지만 여전히 발생합니다. 해시 알고리즘에 알려진 취약점이있는 경우 계산 알고리즘을 사용하여이를 무력화시킬 수 있습니다.
MD5는 예를 들어 Rainbow Tables을 사용하여 공격받을 수 있습니다. 예를 들어 해시 "크래킹"을 제공하는 온라인 서비스가 있습니다. http://md5crack.com/. 여기서 크래킹은 해시를 생성하는 유효한 입력을 재구성하는 것을 의미합니다. 무차별 크랙킹 (brute force cracking)조차도 GPU 기반 접근법 및/또는 분산 컴퓨팅을 사용하는 현대의 프로세싱 성능으로 실현 가능합니다.
해시는 훌륭한 도구이지만 보안 요구 사항과 선택한 해시 알고리즘에 의해 생성 된 해시를 해시를 생성하는 유효한 입력으로 반전하는 것이 상대적으로 쉽다는 것을 알고 있어야합니다. 또한 항상 해시에 소금 값을 사용하십시오.
UPDATE
지금 문제가 다시 기록 된 것을, 나는 AES 암호화에 당신을 참조합니다.
Using AES encryption in C#
_hashing_의 의미를 알고 있습니까? – SLaks
그냥 안된다고하자. 즉, 불가능한 것은 없습니다. –
해시가 한 가지 방법 일 뿐이라는 것을 알고 있습니다. 하지만 암호화 된 텍스트 나 메시지를 C#에서 해독하기위한 방법이 있습니까? – user962206