#include "Poco/Foundation.h"
#include "Poco/UUID.h"
#include "Poco/UUIDGenerator.h"
#include "Poco/MD5Engine.h"
using Poco::UUID;
using Poco::UUIDGenerator;
using Poco::MD5Engine;
using Poco::DigestEngine;
int short_url(std::string out[],std::string text)
{
std::string key = "mylib";//自定义生成MD5加密字符串前的混合KEY
static char chars[] = {//要使用生成URL的字符
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
'y', 'z', '0', '1', '2', '3', '4', '5',
'6', '7', '8', '9', 'A', 'B', 'C', 'D',
'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X', 'Y', 'Z'
};
MD5Engine engine;
engine.update(key + text);
std::string hex = engine.digestToHex(engine.digest());
int hexLen = hex.length();
int subHexLen = hexLen / 8;
for (int i = 0; i < subHexLen; i++)
{
std::string outChars = "";
//int j = i + 1;
std::string subHex = hex.substr(i * 8, 8);
long val = 0;
char *str;
val = (int)strtol(subHex.c_str(), &str, 16);
long idx = 0x3FFFFFFF & val;
for (int k = 0; k < 6; k++)
{
int index = (int)0x0000003D & idx;
outChars += chars[index];
idx = idx >> 5;
}
out[i] = outChars;
}
return 0;
}
根据网上的java代码改的。
短地址算法C++版,使用POCO库
最新推荐文章于 2026-06-20 18:32:07 发布
本文介绍了一种使用MD5加密和特定字符集将长文本转换为短链接的方法。通过结合自定义密钥和输入文本生成MD5哈希值,然后将其转换为易于阅读的短链接形式。该方法适用于创建唯一且简短的网址。

7484

被折叠的 条评论
为什么被折叠?



