SHA1이 거의 충돌이없는 것으로 증명하는 C 프로그램을 작성하려고하지만 실제로 입력 값에 해시를 만드는 방법을 알 수 없습니다. 해시를 만들고 배열에 16 진수 값을 저장하면됩니다. 일부 Google 검색 후, 나는이 사용하는 저를 지시 OpenSSL이 문서를 발견했습니다 : 내가 서명 숯불의 *의 SHA1 또는 SHA1_Init를 사용해야한다 생각하지만, 내가 인수가 어떻게 될지 확실하지 않다C 프로그래밍에서 SHA1 해싱을 사용하는 방법
#include <openssl/sha.h>
unsigned char *SHA1(const unsigned char *d, unsigned long n,
unsigned char *md);
int SHA1_Init(SHA_CTX *c);
int SHA1_Update(SHA_CTX *c, const void *data,
unsigned long len);
int SHA1_Final(unsigned char *md, SHA_CTX *c);
을 제공 x는 해시 할 입력 값입니다. 누군가 나 한테 이걸 정리 해줄 수 있겠 니? 감사.
입력 값 : 메모리 내 문자열 또는 파일 내용은 무엇입니까? –
나는 배열을 지울 때마다 새로운 해시를 생성하고 끝까지 추가해야하는 생일 공격을 씁니다. 나는 그것을 단순하게 유지하고 i의 가치를 해싱하려고했습니다. 메모리 문자열의 빠른 대답. – spassen
SHA1이 거의 충돌이 없다는 것을 증명한다는 것은 무엇을 의미합니까? SHA1은 160 비트 해시이므로 2^160 개의 가능한 값이 있지만 2^160 개가 넘는 가능한 문자열 (예 : 1MB 미만)이 있으므로 충돌이 많이 발생합니다. 무작위로 생성 된 여러 문자열에서 충돌이 발생했는지 여부를 테스트하기를 원할 경우 중간에 안정적인 응답에 필요한 문자열의 수는 실제적으로 높지 않습니다 (충돌을 일찍 발견하지 않는 한 SHA1은 무시할 정도로 작은 확률). –