扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
关于 16位和32位 md5得到的是一个16字节的散列值 每个字节用16进制(0x**)格式成两个字符,连起来得到一个32个字符的串这就是所说的32位。16位就是取的32位的中间段
创新互联主要从事网站制作、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务内丘,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575md5(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许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流