2012-04-02 2 views
-4

데이터베이스에 삽입 한 일부 암호화 데이터를 해독하여 사용자에게 표시해야하는 데이터베이스 작업 중입니다. 데이터베이스의 암호 해독 된 메시지/varchar 항목을 Orginal 또는 String 형식으로 변환 할 수 있습니까? 의 내가Visual C#에서 암호 해독

`abc = `'7meXQAMRb+ERvBj6Dy/SEe6ldukGy6bTKugnCsoYyl+lYNT6'; 

가 다시 ABC에 7meXQAMRb+ERvBj6Dy/SEe6ldukGy6bTKugnCsoYyl+lYNT6 다시 돌아 어쨌든이이 해시 메시지가 있다고 가정 해 봅시다?

는 Btw은 내가

+3

_hashing_의 의미를 알고 있습니까? – SLaks

+2

그냥 안된다고하자. 즉, 불가능한 것은 없습니다. –

+0

해시가 한 가지 방법 일 뿐이라는 것을 알고 있습니다. 하지만 암호화 된 텍스트 나 메시지를 C#에서 해독하기위한 방법이 있습니까? – user962206

답변

1

해시 된 암호를 원래 문자열로 안정적으로 되돌릴 수 없습니다. 그러나 주어진 해시를 생성하는 유효한 입력을 재구성 할 수 있습니다. 다른 대답은 부분적으로 만 정확하고 해시의 상대적 보안을 이해하는 것이 중요하기 때문에이 대답을 제공하고 있습니다.

이것을 이해하려면 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#

+0

레인보우 테이블은 MD5에 대한 공격이 아니며 해시의 세부 정보에 의존하지 않으며 해시 기능에 무지개 테이블을 구성 할 수 있습니다. 또한 해시에 대해 반환하는 값은 거의 확실하게 원래 입력입니다. 해시 충돌을 시도하고 찾기 위해 만들어지지 않았습니다. 11 진수를 초과하지 않는 등 원본 입력에 대한 좋은 제한이없는 한 유효한 해시에 대한 프리 이미지를 찾는 것은 대부분의 해시에서는 실용적이지 않습니다. –

2

아니, 당신이 해시 된 데이터의 암호를 해독 할 수 없습니다 비밀번호 암호화에 대한 OMU Encrypto을 사용했다.

해시 정보의 전체 내용입니다. 대부분의 경우 일방적 인 프로세스입니다.

무지개 공격을 사용하여 일부 입력을 무작위로 공격하고 해시가 일치하는지 확인할 수 있지만 오랜 시간이 걸리고 실제로 찾고있는 것은 아닙니다.

자세한 내용은 Eric J의 답변을 참조하십시오.

+0

해시 된 정보를 표시 할 수있는 방법이 없습니까? – user962206

+0

맞습니다. –

0

해시는 단방향이지만 사용자가 말한 것처럼 타사 암호화 방법을 사용한 경우에는 해독 방법도 제공해야합니다.