Created
July 1, 2017 08:27
-
-
Save flarn2006/0a71e05912a26a42e76b122ba6ce12b7 to your computer and use it in GitHub Desktop.
Patch for Git to use one-byte "SHA1" hashes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/sha1dc/sha1.c b/sha1dc/sha1.c | |
index 3a1735e..67cf753 100644 | |
--- a/sha1dc/sha1.c | |
+++ b/sha1dc/sha1.c | |
@@ -1829,25 +1829,9 @@ int SHA1DCFinal(unsigned char output[20], SHA1_CTX *ctx) | |
ctx->buffer[63] = (unsigned char)(total); | |
sha1_process(ctx, (uint32_t*)(ctx->buffer)); | |
output[0] = (unsigned char)(ctx->ihv[0] >> 24); | |
- output[1] = (unsigned char)(ctx->ihv[0] >> 16); | |
- output[2] = (unsigned char)(ctx->ihv[0] >> 8); | |
- output[3] = (unsigned char)(ctx->ihv[0]); | |
- output[4] = (unsigned char)(ctx->ihv[1] >> 24); | |
- output[5] = (unsigned char)(ctx->ihv[1] >> 16); | |
- output[6] = (unsigned char)(ctx->ihv[1] >> 8); | |
- output[7] = (unsigned char)(ctx->ihv[1]); | |
- output[8] = (unsigned char)(ctx->ihv[2] >> 24); | |
- output[9] = (unsigned char)(ctx->ihv[2] >> 16); | |
- output[10] = (unsigned char)(ctx->ihv[2] >> 8); | |
- output[11] = (unsigned char)(ctx->ihv[2]); | |
- output[12] = (unsigned char)(ctx->ihv[3] >> 24); | |
- output[13] = (unsigned char)(ctx->ihv[3] >> 16); | |
- output[14] = (unsigned char)(ctx->ihv[3] >> 8); | |
- output[15] = (unsigned char)(ctx->ihv[3]); | |
- output[16] = (unsigned char)(ctx->ihv[4] >> 24); | |
- output[17] = (unsigned char)(ctx->ihv[4] >> 16); | |
- output[18] = (unsigned char)(ctx->ihv[4] >> 8); | |
- output[19] = (unsigned char)(ctx->ihv[4]); | |
+ int i; for (i=1; i<20; ++i) { | |
+ output[i] = 0; | |
+ } | |
return ctx->found_collision; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Obviously for any practical use this will just break Git. I just wanted to see how Git handled hash collisions, and more specifically recursive trees, and I don't have a computer powerful enough to break SHA-1 yet. ;)