当前位置:   article > 正文

使用 HMAC-SHA1 算法_hmacsha1在线

hmacsha1在线

在线HMAC计算器:

https://1024tools.com/hmac

http://tool.oschina.net/encrypt?type=2

shell:

    # 随机字符串5位
    rand=$(date +%s%N | sha1sum | head -c 5)
    echo "rand    :     $rand"
    # 准备签名字符串
    signStr="deviceID=$deviceID&rand=$rand×tamp=$timestamp&userKey=$userKey"
    echo "signStr    :    $signStr"
    # 签名
    sign=$(echo -n $signStr | openssl sha1 -hmac $secret | awk '{print $2}')
    echo "sign    :     $sign"
    # 拼接签名字符串
    queryStr="$signStr&sign=$sign"
    echo "queryStr:    $queryStr"

c代码1:

 #include <openssl/sha.h>
 unsigned char *SHA1(const unsigned char *d, unsigned long n,unsigned char *md)
-------------------------------------------------------------------------------
    unsigned char sign[EVP_MAX_MD_SIZE] = {'\0'};  
    unsigned int sign_len = 0;  
    char mdString[41] = {'\0'}; 
    int i;
    HMAC(EVP_sha1(), secret, strlen(secret), (const unsigned char *)signStr, strlen(signStr), sign, &sign_len);
    //转成16进制
    for(i = 0; i < 20; i++)    
        sprintf(&mdString[i*2], "%02x", (unsigned int)sign[i]);      
    printf("strlen(%d),HMAC sign: %s\n", strlen(mdString), mdString);  

或者:

c代码2:

 int SHA1_Init(SHA_CTX *c);
 int SHA1_Update(SHA_CTX *c, const void *data, unsigned long len);
 int SHA1_Final(unsigned char *md, SHA_CTX *c);
 --------------------------------------------------------------------------------

HMAC_CTX ctx;  

 HMAC_CTX_init(&ctx);  

   // Using sha1 hash engine here.  

 // You may use other hash engines. e.g EVP_md5(), EVP_sha224, EVP_sha512, etc  

  HMAC_Init_ex(&ctx, key, strlen(key), EVP_sha1(), NULL);  

 HMAC_Update(&ctx, (unsigned char*)&data, strlen(data));  

 HMAC_Final(&ctx, result, &len);  

 HMAC_CTX_cleanup(&ctx);  

  printf("HMAC digest: ");  

  for (int i = 0; i != len; i++)  

        printf("%02x", (unsigned int)result[i]);  

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号