垦利网站建设,成都网站建设哪家比较好,建设手机银行app下载,网站建设与制作教程吕磊近期项目中HTTPS通讯中#xff0c;token需要使用HMAC-MD5算法生成#xff0c;往上找了一些资料后#xff0c;仍不能满足自身需求#xff0c;故次一记。
前期准备#xff1a;
①下载Cryptopp库#xff08;我下载的是8.8.0 Release版本#xff09;#xff1a;Crypto Li…近期项目中HTTPS通讯中token需要使用HMAC-MD5算法生成往上找了一些资料后仍不能满足自身需求故次一记。
前期准备
①下载Cryptopp库我下载的是8.8.0 Release版本Crypto Library 8.9 | Free C Class Library of Cryptographic Schemes
②进行编译根据自身情况进行VS环境配置 将cryptdll、cryptlib编译后分别按文件夹分类保存 【libcryptlib.lib、cryptopp.lib】【dllcryptopp.dll】 也可以直接下载我编译好的 HMAC-SHA256算法实现
#include iostream
#include string
#include cryptopp/hmac.h
#include cryptopp/sha.h
int main()
{std::string key mysecretkey;std::string data Hello, HMAC!;CryptoPP::HMACCryptoPP::SHA256 hmac((const byte*)key.data(), key.size());byte digest[CryptoPP::SHA256::DIGESTSIZE];hmac.Update((const byte*)data.data(), data.size());hmac.Final(digest);std::cout HMAC-SHA256: ;for (int i 0; i CryptoPP::SHA256::DIGESTSIZE; i) {printf(%02x, digest[i]);}std::cout std::endl;return 0;
}
MD5算法实现
std::string crypto::md5(std::string text)
{std::string digest;CryptoPP::Weak1::MD5 md5;CryptoPP::HashFilter hashfilter(md5);hashfilter.Attach(new CryptoPP::HexEncoder(new CryptoPP::StringSink(digest), false));hashfilter.Put(reinterpret_castconst unsigned char*(text.c_str()), text.length());hashfilter.MessageEnd();return digest;
}HMAC-MD5算法实现
#include hmac.h
#include md5.h{QJsonObject json;json[key] 1234567890;QJsonDocument document;document.setObject(json);QByteArray ba document.toJson(QJsonDocument::Compact);//Indented : Compactstd::string key apple;std::string body ba.data();CryptoPP::HMACCryptoPP::Weak1::MD5 hmac((const CryptoPP::byte*)key.data(), key.size());CryptoPP::byte digest[CryptoPP::Weak1::MD5::DIGESTSIZE];hmac.Update((const CryptoPP::byte*)body.data(), body.size());hmac.Final(digest);std::cout HMAC-MD5: ;for (int i 0; i CryptoPP::Weak1::MD5::DIGESTSIZE; i) {printf(%02x, digest[i]);}std::cout std::endl;
}