testfile
bir dosya veteststring
dizgisi var. bir kabuk içindeAynı içerik, farklı MD5 - Dosya ve Dizeyazdım: o zaman
echo "a" > testfile
xxd testfile
yüzden
çıktı benim fileContent onaltılık değerlerini görebilirsiniz:0000000: 610a a.
- kodumu bkz:
int file; struct stat s; unsigned long size; char* buffer; char md5[MD5_DIGEST_LENGTH] file = open("testfile", O_RDONLY); if (file < 0) return false; if (fstat(file, &s) < 0) { close(file); return false; } size = s.st_size; //GET FILE SIZE printf("filesize: %lu\n", size); //PRINT FILESIZE FOR DEBUGGING buffer = (char*)mmap(0, size, PROT_READ, MAP_SHARED, file, 0); //MAP FILE CONTENT TO BUFFER MD5((unsigned char*)buffer, size, md5); //GENERATE MD5 munmap(buffer, size); //UNMAP BUFFER close(file); for (int i = 0; i < MD5_DIGEST_LENGTH; i++) printf("%02x", md5[i]); printf("\n"); unsigned char* teststring = "\x61\x0a"; //SAME STRING AS IN THE FILE MD5((unsigned char*)teststring, 2, md5); for (int i = 0; i < MD5_DIGEST_LENGTH; i++) printf("%02x", md5[i]); printf("\n");
o yazdırır:
filesize: 2 60b725f10c9c85c70d97880dfe8191b3 e29311f6f1bf1af907f9ef9f44b8328b
iki tamamen farklı md5 karmaları.
onlar aynı olan bir dosyaya
içinebuffer
yazma ve bir dosya içineteststring
yazma çalıştı!
neden?
buffer
teststring
ile aynı değil mi?
6
A
cevap
2
Doğru hash, ilk karma, 60b725f10c9c85c70d97880dfe8191b3
.
$ echo "d" | md5
e29311f6f1bf1af907f9ef9f44b8328b
size yayınlanmıştır kodu ne olduğundan emin misiniz:
$ echo "a" | md5
60b725f10c9c85c70d97880dfe8191b3
Kişisel ikinci karma "\ x64 \ x0a" karmasını veya karakteri sonrasında bir yeni satır 'd' olur derleme/koşuyor musun? Yeniden derlemeyi unuttun mu? Eski bir ikiliyi mi yürütüyorsun?
+1
"Gönderdiğiniz kodun neyi derlediğinizden emin misiniz?" - Büyük olasılıkla değil. char md5 [] 'imzasız olması gerekir, 'teststring' ** bu derleme ilk etapta bile imzasız olmalı ** – DevSolar
İlgili konular
- 1. Smarty - aynı şablon farklı içerik
- 2. PHP md5() farklı çıktı verir MySQL md5
- 3. Farklı biçimdeki aynı dosya nasıl yüklenir
- 4. strcmp() aynı dize karşılaştırmaları
- 5. javascript: içerik boyutundan farklı olarak indirilen dosya boyutu
- 6. d3.max, tsv ve json için farklı değerler döndürür (aynı içerik)
- 7. Hash MD5 Elixir'in yılında Elixir
- 8. Azure Farklı kaynak grubunda ve aynı vede aynı VM adı
- 9. Neden "karma ('md5', 'string')" md5'ten ("string ')" daha hızlı "?
- 10. Aynı kısmi iki farklı uygulamada farklı davranır
- 11. Eclipse Plugin Geliştirme, aynı dosya uzantısına farklı editörleri ilişkilendiriyor
- 12. Aynı Sınıfta Dize Çağırma
- 13. MD5 rutinleri?
- 14. Aynı Görüntü, ancak farklı base64
- 15. Mysql Bir sütunda aynı değerdeki satırları seçin ve başka bir farklı
- 16. Çoklu dize değiştirmeleri (aynı dize içinde)
- 17. Klasör oluştur ve aynı anda dosya yolla
- 18. farklı şablonlar aynı adla farklı değişkenleri kullanma
- 19. Aynı program, aynı JVM, ancak farklı makinelerde çok farklı bellek gereksinimleri ve yürütme süresi - neden?
- 20. Algoritma Karmaşıklık ve Güvenlik: MD5 veya SHA1?
- 21. MD5 ve SHA-1'i edinme
- 22. MD5 hash değerini hesapla ve göster
- 23. @ dosya yolunda işareti/dize
- 24. IE11 değil içerik tasarruf dosya saygı
- 25. MD5 hex hash VBA kullanarak bir dosya için nasıl?
- 26. Farklı istisnalar için aynı ExceptionMapper
- 27. wkhtmltopdf - aynı yapılandırma farklı çıktı
- 28. Aynı şemadaki farklı kalıtım türleri
- 29. Farklı tarihler için Winston logger farklı dosya
- 30. xsd aynı eleman, farklı türleri?
C/C++ programcısı değilim, bu yüzden fazla teknik yardım sağlayamıyorum. Dosya hangi formatta (Unicode/ASCII vb)? Tamponun uzunluğu (bir kez doldurulan) teststring uzunluğu ile aynı mı? – series0ne
evet, her ikisi de uzunluk = 2 karaktere sahiptir; format = ascii – bricklore
arabelleği/dizeyi onaltılık olarak yazdırır (md5 değil), farklılık gösterip göstermediğine bakın. Eğer aynı ise, muhtemelen md5 işlevini farklı bir şekilde kullanmanız gerekir (bazı uygulamalar md5 işlemini bitirmenizi gerektirir) – x4rf41