英数字を小文字にするのどうやるんだっけ?ってあたりから、激しくドレインしてます。
#include <fstream> #include <iostream> #include <iterator> #include <algorithm> // transform #include <string> #include <openssl/rsa.h> #include <openssl/sha.h> #include <boost/algorithm/hex.hpp> #include <boost/algorithm/string/case_conv.hpp> namespace { const char heading[] = "heading"; } void show_usage() { std::cout << "make_digest [string]" << std::endl; } std::string digest( const char* str ) { unsigned char hash[SHA256_DIGEST_LENGTH]; SHA256_CTX ctx; SHA256_Init(&ctx); SHA256_Update(&ctx, str, strlen(str)); SHA256_Final(hash, &ctx); std::string result( (const char*)hash, SHA256_DIGEST_LENGTH ); return result; } int main(int argc, char* argv[]) { if( argc != 2 ) { show_usage(); return 1; } std::string charange( heading ); charange += std::string( argv[1] ); std::string hoge = digest( charange.c_str() ); std::string digest; boost::algorithm::hex( hoge, std::back_inserter( digest ) ); boost::algorithm::to_lower( digest ); //std::transform( digest.begin(), digest.end(), digest.begin(), ::tolower ); std::cout << digest << std::endl; return 0; }
0 件のコメント:
コメントを投稿