簡體   English   中英

C ++:檢查字符串是否是有效的MD5十六進制哈希

[英]C++: Check if string is a valid MD5 hex hash

如何正確檢查std :: string是否是C ++上有效的MD5十六進制哈希?

請記住,我想避免循環,我不能使用boost庫,也不能使用C ++ 11中的正則表達式。

這樣做:

if (value.size() == 32 && value.find_first_not_of("0123456789abcdefABCDEF") == -1)

或者由於cluracan在評論中提到isxdigit ,這可能會更快:

if (value.size() == 32 && std::find_if(value.begin(), value.end(), [](char c) { return !std::isxdigit(static_cast<unsigned char>(c)); }) == value.end())

請記住,MD5是128位值,即16字節。 為方便起見,它通常用32char十六進制字符串編寫。

如果你不需要'看'你的md5值 - 保持16bytes - 這樣你就不需要任何像std :: string這樣的花哨結構來存儲它。 只需16個字節的數組。 您不必驗證它,因為您可以存儲在16byte數組中的所有內容也是有效的MD5值;-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM