JAVA和Python HmacSHA1 算法计算API签名的实现
2018-06-12 10:57
1706 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bojie5744/article/details/80662463
JAVA版
// 计算签名 private static final String ENCODING = "UTF-8"; private static final String ALGORITHM = "HmacSHA1"; Mac mac = Mac.getInstance(ALGORITHM); String text = "你需要计算的内容"; String acKey = "一般为你的接口accesskey"; mac.init(new SecretKeySpec(acKey.getBytes(ENCODING), ALGORITHM)); byte[] signData = mac.doFinal(text.getBytes(ENCODING)); String signature = new String(Base64.encodeBase64(signData));Python版
# -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf8') import requests import json import traceback import urllib import hashlib import time import uuid import string import datetime from hashlib import sha1 import base64 import hmac from hmac import new as hmac #授权 def hash_hmac(ac_key, text): return str(hmac(ac_key, text, sha1).digest().encode('base64')[:-1])
关于API参数URL编码需要注意的问题:
JAVA的URLEncoder.encode函数默认对”/”进行编码,而python的URL编码函数urllib.quote默认不会对”/”进行编码,所以需要对该函数进行参数指定,如下实现。
urllib.quote("/",safe='')
关于GMT时间获取的实现:
Python版time_format_str = datetime.datetime.utcnow().isoformat() time_format_str = time_format_str.split(".")[0]+"Z"JAVA版
private static final String ISO8601_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'"; private static String formatIso8601Date(Date date) { SimpleDateFormat df = new SimpleDateFormat(ISO8601_DATE_FORMAT); df.setTimeZone(TimeZone.getTimeZone("GMT")); return df.format(date); }
相关文章推荐
- JAVA和Python HmacSHA1 算法计算API签名的实现
- JAVA和Python HmacSHA1 算法计算API签名的实现
- Java对PHP服务器hmac_sha1签名认证方法的匹配实现 的另一种方式
- Python对PHP服务器hmac_sha1签名认证方法的匹配实现
- Java对PHP服务器hmac_sha1签名认证方法的匹配实现
- Java对PHP服务器hmac_sha1签名认证方法的匹配实现
- Java对PHP服务器hmac_sha1签名认证方法的匹配实现
- Java对PHP服务器hmac_sha1签名认证方法的匹配实现
- 余弦方法计算相似度算法--Python实现 Java实现
- 查找""排序""简单数学计算" "简单算法"[Java实现](数据结构和算法)(复习)(持续更新
- java 实现 hmac_sha1加密
- Android HMAC_SHA1 算法简单实现
- Java实现HmacSHA1加密
- Amazon Api 签名算法(golang版和java版)
- 【LeetCode-面试算法经典-Java实现】【151-Evaluate Reverse Polish Notation(计算逆波兰式)】
- Java基于余弦方法实现的计算相似度算法示例
- Python3实现计算两个数组的交集算法示例
- Twitter的分布式自增ID算法Snowflake实现分析及其Java、Php和Python版
- 【算法数据结构Java实现】递归的简单剖析及时间复杂度计算
- java实现莱文斯坦算法(计算相似度)