2017-02-27 9 views
2

문자열을 해독 할 필요없이 다른 문자열을 sha256 표현으로 검증하고 싶습니다. 이것이 가능한가?java - 문자열이 sha256 해시인지 확인하는 방법이 있습니까?

+3

해시는 암호화되지 않습니다. 당신이 지금 무엇을 요구하고 있는지에 대해서는 매우 분명하지 않습니다. 기본적으로 해쉬의 유효성을 검사하는 방법은 문자열을 다시 해쉬하고 동일한 해시를 얻는지를 확인하는 것입니다. –

답변

2

sha-256 값은 일반적으로 Java에서 String 또는 byte[]으로 나타내는 256 비트 (32 바이트) 값입니다.

값 자체로는 의미가 없습니다. 특정 String이 해시인지 확인하려면 임의의 32 바이트 숫자가 무한한 알 수없는 일반 텍스트의 해시입니다. 그러나 "32 바이트 숫자가 숫자라는 것을 어떻게 알 수 있습니까?"라고 묻는 것과 같습니다. 아무데도 가지 않을 것입니다.

일반 텍스트와 쌍을 이루는 경우에만 유용하므로 일반 텍스트에서 계산 된 해시와 비교하여 일치하는지 확인할 수 있습니다.

+0

"* 모든 32 바이트 숫자는 무한한 알려지지 않은 일반 텍스트의 해시입니다. *"=> 실제적으로 2^32 개의 가능한 SHA256 값이 있습니까? – assylias

+0

http://crypto.stackexchange.com/questions/2670/is-every-output-of-a-hash-function-posable – assylias

+0

@assylias : 아마도 '^ 2 (32 * 8)'가능한 SHA256 값을 의미 할 것입니다. 일반적으로 귀하의 질문에 대답이 없기 때문에 관련된 해시 함수에만 해당됩니다. 가능한 길이의 무한한 양의 일반 텍스트를 가정하면 해시 함수의 코도메인은 함수 자체가 적합 할 경우 완료 될 수 있습니다. 그것을 증명하는 것은 다른 이야기입니다. – Jack

1

다른 문자열을 해시 한 다음이 두 문자열을 서로 비교하는 것으로 생각합니다.
이것이 도움이 될지 모르겠지만 패스워드 시도를 해킹하기 위해 무지개 테이블을 만들 때 일반적으로 사용되는 것으로 읽었습니다.
EDIT : 아, 이것은 웹 페이지 iirc에 로그인 할 때 PHP에서 암호를 비교하는 방법이기도합니다.
적어도 나는 대학에서 이렇게해야만했다.

+1

두 값이 사용하는 해시 값이 같지 않기 때문에이 방법은 작동하지 않습니다. – CLR45

+1

내가 틀렸다면 나를 바로 잡을 수 있지만, OP는 sha2 해시라고 했으므로 php의 md5 함수처럼 해시 함수가 있어야합니다. – clockw0rk

1

특정 규칙을 사용하여 문자열을 구문 분석하고 문자열을 sha 해시로 한정하려고 시도 할 수 있습니다. 다음 게시물은 귀하의 질문에 대한 답변을 드릴 것입니다 How to determine whether a string is a hash.

3

예 아니오.

문자열이 매우 쉽게 헥스인지 테스트 할 수 있습니다. 그런 다음 통계적으로 의미있는 숫자와 문자가 포함되어 있는지 테스트 할 수 있습니다. 그것은 몇몇 일반적인 비 sha256 문자열을 배제 할 것입니다.

누군가가 sha256처럼 보이도록 고안된 임의의 문자열을 만든다면 어떤 수학적 테스트로도 실제와 구별 할 수 없다고 생각합니다. 알고리즘은 그것에 강건하도록 설계되었습니다.