Bir dosyanın MD5 karmasını hesaplayan güzel bir bellek eşlemeli dosya örneğim var. Bu sorun olmadan iyi çalışıyor.C++ 'da bir dizenin MD5 değerini hesaplayın
Dizginin MD5 karmasını hesaplamak için bunu değiştirmek istiyorum.
Yani örnektir: Yaptığım değişimdir
unsigned char result[MD5_DIGEST_LENGTH];
boost::iostreams::mapped_file_source src(path);
MD5((unsigned char*)src.data(), src.size(), result);
std::ostringstream sout;
sout<<std::hex<<std::setfill('0');
for(long long c: result)
{
sout<<std::setw(2)<<(long long)c;
}
return sout.str();
(dosyayla birini çalıştırmak istiyorsanız bu kod çalıştırmasına ve ayrıca şeyler artırmak için #include <openssl/md5.h>
dahil):
std::string str("Hello");
unsigned char result[MD5_DIGEST_LENGTH];
MD5((unsigned char*)str.c_str(), str.size(), result);
std::ostringstream sout;
sout<<std::hex<<std::setfill('0');
for(long long c: result)
{
sout<<std::setw(2)<<(long long)c;
}
return sout.str();
Ama bu sonucu üretir:
8b1a9953c4611296a827abf8c47804d7
Komut
$ md5sum <<< Hello
sonuç verirken
:
09f7e02f1290be211da707a266f153b3
Neden sonuç kabul etmiyorum? Hangisi yanlış?
Teşekkürler.
DÜZENLEME: yüzden oraya işaretli olduğundan doğru cevabı aldık. Terminalden
md5sum
aranabilir doğru yoludur:
$ printf '%s' "Hello" | md5sum
yeni hat dahil edilmemesi için.
Dosyada bir satırbaşı var mı? – Slava
@Slava Dosya yok. "Merhaba" sadece bir dizedir. Ne demek istediğini açıklayabilir misiniz? –
8b1a9953c4611296a827abf8c47804d7 dizesi Hello – deviantfan