Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/util/md5.cpp
| Show First 20 Lines • Show All 341 Lines • ▼ Show 20 Lines | void MD5Hash::finish(uint8_t digest[16]) | ||||
| append(data, 8); | append(data, 8); | ||||
| for (i = 0; i < 16; ++i) | for (i = 0; i < 16; ++i) | ||||
| digest[i] = (uint8_t)(abcd[i >> 2] >> ((i & 3) << 3)); | digest[i] = (uint8_t)(abcd[i >> 2] >> ((i & 3) << 3)); | ||||
| } | } | ||||
| string MD5Hash::get_hex() | string MD5Hash::get_hex() | ||||
| { | { | ||||
| constexpr char kHexDigits[] = { | |||||
| '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; | |||||
| uint8_t digest[16]; | uint8_t digest[16]; | ||||
| char buf[16 * 2 + 1]; | char buf[16 * 2 + 1]; | ||||
| finish(digest); | finish(digest); | ||||
| for (int i = 0; i < 16; i++) | for (int i = 0; i < 16; i++) { | ||||
| sprintf(buf + i * 2, "%02X", (unsigned int)digest[i]); | buf[i * 2 + 0] = kHexDigits[digest[i] / 0x10]; | ||||
| buf[i * 2 + 1] = kHexDigits[digest[i] % 0x10]; | |||||
| } | |||||
| buf[sizeof(buf) - 1] = '\0'; | buf[sizeof(buf) - 1] = '\0'; | ||||
| return string(buf); | return string(buf); | ||||
| } | } | ||||
| string util_md5_string(const string &str) | string util_md5_string(const string &str) | ||||
| { | { | ||||
| MD5Hash md5; | MD5Hash md5; | ||||
| md5.append((uint8_t *)str.c_str(), str.size()); | md5.append((uint8_t *)str.c_str(), str.size()); | ||||
| return md5.get_hex(); | return md5.get_hex(); | ||||
| } | } | ||||
| CCL_NAMESPACE_END | CCL_NAMESPACE_END | ||||