下面的代码使用 HMAC SHA256 生成签名哈希。此代码在 Debian Jessie 和 Ubuntu 16.04(OpenSSL 1.0.2g 2016 年 3 月 1 日)上编译并运行良好。
\n\n#include <openssl/evp.h>\n#include <openssl/hmac.h>\n#include <iomanip>\n#include <iostream>\n#include <string>\n#include <sstream>\n\nusing namespace std;\n\nstring HMAC256(string data, string key)\n{\n stringstream ss;\n HMAC_CTX ctx;\n unsigned int len;\n unsigned char out[EVP_MAX_MD_SIZE];\n HMAC_Init(&ctx, key.c_str(), key.length(), EVP_sha256());\n HMAC_Update(&ctx, (unsigned char*)data.c_str(), data.length());\n HMAC_Final(&ctx, out, &len);\n HMAC_cleanup(&ctx); \n for (unsigned int i = 0; i < len; i++)\n {\n ss << setw(2) << setfill(\'0\') << hex << static_cast<int> (out[i]);\n }\n return ss.str();\n}\n\nint main()\n{\n cout << …Run Code Online (Sandbox Code Playgroud) 出于好奇,我使用十六进制编辑器打开了 GO 编译器生成的二进制文件,令我惊讶的是,我在二进制文件中发现了项目中使用的每个源代码的完整路径和文件名。
就像,很明显有像/home/myusername/myprojectname/source.go这样的信息
更惊讶的是,我发现了诸如特定功能如何工作的注释之类的东西
现在我知道为什么用 Golang 编写并编译的“Hello World”会生成 3mb 的二进制文件......
有谁知道是否有办法从 golang 二进制文件中删除这些东西?比如,有编译器标志吗?