使用 HMAC-SHA1 算法
在线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]);
使用 HMAC-SHA1 算法相关推荐
- HASH和HMAC(3):SHA-1算法原理
协议标准:https://csrc.nist.gov/CSRC/media/Publications/fips/180/2/archive/2002-08-01/documents/fips180-2 ...
- C语言hmacsha1,在C中执行hmac sha1
我正在尝试生成Hmac-sha1的一小段代码.我被要求使用用于SHA1计算的OpenSSL库自己编码hmac实现. 后"wiki'ing的算法,这里是我有什么below.I已经使用的输入与R ...
- ASP.NET中使用MD5和SHA1算法加密
你的主页或者你管理的网站有各种密码需要保护,把密码直接放在数据库或者文件中存在不少安全隐患,所以密码加密后存储是最常见的做法.在ASP.NET中实现加密非常容易..NET SDK中提供了CookieA ...
- SHA-1算法c语言实现
安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signatu ...
- 硬件安全 (1) —— SHA-1算法在FPGA上的实现
SHA-1 算法在FPGA上的实现 - 1 背景介绍 散列函数(英语:Hash function)又称散列算法.哈希函数,是一种从任何一种数据中创建小的数字"指纹"的方法.散列函数 ...
- ASP.NET中密码保护,MD5和SHA1算法的使用
ASP.NET中密码保护,MD5和SHA1算法的使用 你的主页或者你管理的网站有各种密码需要保护,把密码直接放在数据库或者文件中存在不少安全隐患,所以密码加密后存储是最常见的做法.在ASP.NET中实 ...
- java sha1hash 算法_javaweb使用sha1算法登录加密的整个过程
sha1算法还是比较潮流的算法并且可以简单使用的算法,建议新手可以选用sha1算法. 百度百科对sha1算法的解释:安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 ( ...
- sha1原型 c语言,SHA1算法实现(C语言)
SHA1算法实现 1. SHA1算法简介 对于长度小于2^64位的消息,SHA1产生一个160位的消息摘要.主要用于验证数据的完整性. 2. SHA1算法原理 a. 数据填充规则 对消息填充,使得其比 ...
- JavaScript:实现加密哈希SHA-1 算法(附完整源码)
JavaScript:实现加密哈希SHA-1 算法 // main variables const CHAR_SIZE = 8/*** Adds padding to binary/hex strin ...
- Python:实现sha1算法(附完整源码)
Python:实现sha1算法 import argparse import hashlib # hashlib is only used inside the Test class import s ...
最新文章
- Typesetting Engine_ Presto
- 使用ajax和history.pushState无刷新改变页面URL
- php顺序、二分查找
- 哪里可以学python编程-Python编程适合哪些人学?老男孩Python教程
- IoC(Inversion of Control,控制反转)模式
- Linux:让普通用户临时性获得root用户权限
- python模块详解 time与date time
- mac 硬盘未推出 硬盘无法读取_在Mac上(正确的)格式化U盘
- 嵌入式linux svn,Linux下配置subversion使其支持svn+ssh方式访问
- ABP Framework 5.2 RC 版本发布及新增功能介绍
- jq 多个div从右向左依次显示_jquery – Animate绝对div到左边:0然后到右边:0和循环...
- mysql添加序列触发器_Oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例...
- elm的 java包_Elm架构
- Asp.Net IIS 管理类(全)
- 2.《JSP应用开发案例教程》第1章 JSP概述
- 陶瓷PCB电路板生产工艺
- java中object是什么_Java中的Object是什么?
- dataFrame(DF)将数据插入ES时报错 org.elasticsearch.hadoop.EsHadoopIllegalArgumentException: Cannot detect E
- 三国杀服务器维修,三国杀云服务器
- 苹果开发者账号申请流程完整版
热门文章
- 常见问题-瑞友天翼应用虚拟化系统安装之前需要做什么准备
- java工程师的关键绩效指标_绩效考核表(JAVA高级工程师)
- 屏幕坏了无法使用计算机调试,vivo手机屏幕坏了连接电脑没反应怎么办
- 操作系统实验报告 lab6
- hp服务器系统检测,HP服务器检测步骤
- ubuntu + usb转RS232驱动
- 高数篇(二)-- 傅里叶变换 VS 拉普拉斯变换
- 医院药品管理系统java sql_医院药品管理系统设计(Netbeans,Myeclipse,MySQL,SQLServer)
- python3安装详细教程
- html自动计算时间代码,原生JavaScript实现日期计算器功能