重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
關于 16位和32位 md5得到的是一個16字節的散列值 每個字節用16進制(0x**)格式成兩個字符,連起來得到一個32個字符的串這就是所說的32位。16位就是取的32位的中間段
md5(aabbccdd) 32位 = bf3b2290e229da2ba272a81c602ea88d
md5(aabbccdd) 16位 = e229da2ba272a81c
使用openssl的md5有兩種方式
第一種 為非連緩的字符串準備的 多次調用MD5_Update最后通過MD5_Final得到最終的md5值
int MD5_Init(MD5_CTX *c);
int MD5_Update(MD5_CTX *c, const void *data, size_t len);
int MD5_Final(unsigned char *md, MD5_CTX *c);
第二種 直接得到結果 函數源代碼里面其實也是直接調用的 MD5_Init MD5_Update MD5_Final
unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md);
#include#include #include #include int main() { unsigned char MD5result[16]; std::string src = "aabbccddee"; std::string md5 = ""; std::string md5_16 = ""; char temp[33] = {}; MD5((const unsigned char*)src.c_str(), src.size(), MD5result); for(int i = 0; i < 16; ++i) { snprintf(temp, 10, "%02x", MD5result[i]); md5 += temp; if(i >= 4 && i <= 11) md5_16 += temp; } printf("src:%s\nmd5 32位:%s\nmd5 16位: %s\n", src.c_str(), md5.c_str(), md5_16.c_str()); return 0; }
g++ -g -o openssl_md5 openssl_md5.cpp -I/usr/include/openssl -lssl -lcrypto -L/usr/lib64
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。