우리는 데이터를 암호화하고 SHA-1 또는 SHA-2를 사용하는 프로그램을 알고 있어야합니다. 불행히도 유일한 힌트는 해시 값이있는 테이블입니다. 누군가 두 암호화 유형을 구별하여 여기에서 사용 된 암호화 유형을 어떻게 알 수 있습니까?SHA-1과 SHA-2를 구별하십시오.
답변
우리는 데이터를 암호화하고 SHA-1 또는 SHA-2를 사용하는 데이터를 알아야합니다.
데이터를 해시한다고 가정합니다. SHA는 암호화 알고리즘이 아닌 해싱 알고리즘의 계열입니다.
가장 큰 차이점은 길이를 구별하는 것입니다. SHA-1은 160 비트 (20 바이트)입니다. SHA-2는 224 ~ 512 비트 (28 ~ 64 바이트)의 여러 형태로 제공됩니다. 일부 잘린 버전의 SHA-2가 있으므로 사용중인 SHA-2 버전을 정확히 알기는 어려울 수 있지만 SHA-1보다 길다는 점에 유의하십시오.
암호화를 사용하지 않는 것이 좋습니다. 암호화는 가역적이며, 해싱은 그렇지 않습니다. 암호화는 무작위 함수처럼 되려고하는 해시와 달리 임의적 인 순열과 같습니다. SHA-1은 길이가 160 비트 (20 바이트)이며, SHA-2는 224-512 비트 길이 (28-32 바이트)의 해시 함수 제품군입니다. 인코딩 된 문자 당 4 또는 6 비트를 제공하는 16 진 인코딩 또는 base64 인코딩이있을 수 있습니다. 일부 경우 (예 : 암호 해싱) 해시에 접두사가 어떻게 만들어 졌는지에 대한 정보를 접두사로 사용하는 것이 일반적이며 해시 문자열은 사용자가보고있는 것을 알려주는 $ 1 $와 같은 특수 접두사로 시작됩니다.
여분의 접두사가없고 같은 길이로 잘린 데이터가 있고 해싱 전 입력에 대해 알지 못하는 경우 실제 방법으로 두 가지를 구분할 수 있다고 생각하지 않습니다. SHA-1과 truncated SHA-2의 차이점을 알 수있는 능력은 적어도 하나는 안전한 암호화 기능을 요구하는 무작위 데이터와 분리 될 수 있음을 의미합니다. 실용적인 구별 공격을 알지 못합니다.
계산 복잡도에 관계없이 대부분의 해시가 다른 함수의 사전 이미지를 가지고 있기 때문에 단일 해시가 어디에서 왔는지 알 수 없습니다.
- 1. SHA2를 사용하여 MySQL에 연결
- 2. SHA1과 같은 해시 함수의 임의성
- 3. 날짜/시간과 버전을 구별하십시오.
- 4. mkdir 오류의 원인을 구별하십시오.
- 5. 생성자와 일반 함수를 구별하십시오.
- 6. 목록의 목록을 구별하십시오.
- 7. SendMessage와 Keypress를 구별하십시오.
- 8. PySide의 신호 소스를 구별하십시오.
- 9. jquery와 javascript를 구별하십시오.
- 10. vaadin의 라디오 버튼을 구별하십시오.
- 11. nodejs에서 다른 리눅스 배포판을 구별하십시오.
- 12. Prolog : 숫자와 문자 목록을 구별하십시오
- 13. iPhone 4와 iPhone 4S를 구별하십시오
- 14. 메서드의 두 엔트리 포인트를 구별하십시오
- 15. 조직의 이름과 사람의 이름을 구별하십시오.
- 16. Java에서 Mongodb를 정렬하고 구별하십시오. 3.2
- 17. wl_surface, wl_shell_surface 및 cairo_surface를 구별하십시오.
- 18. 표준 HMAC-SHA1과 다른 Android HMAC-SHA1
- 19. 안드로이드 구글지도 API를 SHA1과 패키지로 구성 오류
- 20. SHA2를 사용하기 위해 Tomcat JDBCRealm을 가져올 수 없습니다.
- 21. php에서 sha2를 사용하여 값을 암호화하고 암호 해독 하시겠습니까?
- 22. OpensSSL이 SHA2를 사용하여 난수를 생성하도록 강제하는 방법은 무엇입니까?
- 23. Microsoft SQL Server에서 Sybase ASE를 구별하십시오.
- 24. iOS의 iPhone 및 iPad 스토리 보드를 구별하십시오
- 25. Bash : 와일드 카드로 파일과 디렉토리를 구별하십시오.
- 26. ANTLR DXF 그룹 코드와 정수를 구별하십시오.
- 27. 스타일과 자바 스크립트에 대한 CSS 클래스를 구별하십시오.
- 28. 같은 이름을 가진 다른 파일 시스템을 구별하십시오.
- 29. .each로 인쇄하기 위해 키와 다중 값을 구별하십시오.
- 30. Java 메소드에서 다중 인수와 배열 인수를 구별하십시오.