C++ HMAC_SHA1加密演算法原始碼
阿新 • • 發佈:2019-02-07
呼叫方法:
void CEncypDlg::OnBnClickedOk()
{
// TODO: 在此新增控制元件通知處理程式程式碼
char *text = "Hi There";
unsigned char* key = (unsigned char*)"123";
BYTE digest[20];
HMAC_SHA1( (BYTE*)text,
strlen(text),
key,
sizeof(key),
digest );
int len = sizeof(digest);
m_strSerialNumber=byteToHexStr(digest,len).c_str();
UpdateData(FALSE); // 輸出的加密結果:0F7B5419BB8358632AFCA202C96E9249FB936D95
}
string byteToHexStr(unsigned char byte_arr[], int arr_len)
{
string hexstr;
for (int i=0;i<arr_len;i++)
{
char hex1;
char hex2;
int value=byte_arr[i]; //直接將unsigned char賦值給整型的值,強制轉換
int v1=value/16;
int v2=value % 16;
//將商轉成字母
if (v1>=0&&v1<=9)
hex1=(char)(48+v1);
else
hex1=(char)(55+v1);
//將餘數轉成字母
if (v2>=0&&v2<=9)
hex2=(char)(48+v2);
else
hex2=(char)(55+v2);
//將字母連線成串
hexstr=hexstr+hex1+hex2;
}
return hexstr;
}