js和python中使用CryptoJS.SHA256做加密算法详解

加密方式是:先使用sha256进行加密,然后用base64转码,计算当前GMT时间,使用hmacsha256加密,最后得到base64码,即为签名。
js中使用:

<script src="crypto-js.min.js"></script>
function get_sha256(str, secret) {
    // 计算sha256
    var sha256 = CryptoJS.SHA256(str)
    sha256 = CryptoJS.enc.Base64.stringify(sha256);
    var digest = "SHA-256=" + sha256;
    // 获取格式GMT格式时间
    var gmt_date = new Date().toGMTString();
    var qq = "x-date: " + gmt_date + "\ndigest: " + digest;
    // hmac_sha256加密
    var signature = CryptoJS.HmacSHA256(qq, secret);
    signature = CryptoJS.enc.Base64.stringify(signature);
    console.log(signature);
    return signature
}

get_sha256("abcd", "your secret")

python3.6中使用:

import datetime
import hashlib
import base64
import hmac


# 获取格式GMT格式时间
def get_gmt_timestr():
gmt_formate = '%a, %d %b %Y %H:%M:%S GMT'
t = datetime.datetime.utcnow().strftime(gmt_formate)
return t

# hmac_sha256加密
def get_hmac_sha256(message, secret):
message = message.encode('utf-8')
secret = secret.encode('utf-8')
signature = base64.b64encode(hmac.new(secret, message, digestmod=hashlib.sha256).digest()).decode("utf-8")
return signature

# 计算sha256
def get_sha256(message):
sha256 = hashlib.sha256()
sha256.update(message.encode('utf-8'))
res = base64.b64encode(bytes.fromhex(sha256.hexdigest())).decode("utf-8")
return res

def echo(data, secret):
digest = "SHA-256=%s" % get_sha256(data)
gmt_date = get_gmt_timestr()
signature = get_hmac_sha256("x-date: %s\ndigest: %s" % (gmt_date, digest), secret)
print(signature)


if __name__ == "__main__":
echo("abcd", "your secret")

参考网址:
https://stackoverflow.com/questions/29432506/how-to-get-digest-representation-of-cryptojs-hmacsha256-in-js
https://www.cnblogs.com/devcjq/articles/5971564.html
https://www.cnblogs.com/japhasiac/p/7739846.html
https://www.cnblogs.com/jackiehe/p/4648963.html
https://blog.csdn.net/zwc2xm/article/details/79301237http://www.thinkasp.cn/show/51.html#acr-12
https://segmentfault.com/q/1010000012305581
http://www.sharejs.com/codes/javascript/7311
膜拜大佬~~

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CryptoJS.SHA256是一个加密函数,用于计算给定输入的SHA256哈希值。它是一种加密方式,先使用SHA256进行加密,然后返回加密后的结果。在引用\[1\]的示例代码使用CryptoJS.SHA256函数计算了字符串"abcd"的SHA256哈希值,并将结果转换为Base64编码。在引用\[2\]的示例代码使用CryptoJS.SHA256函数计算了字符串"hello world"的SHA256哈希值,并将结果以字符串形式返回。在引用\[3\]的示例代码使用CryptoJS.SHA256函数计算了从文件读取的数据的SHA256哈希值,并将结果以字符串形式返回。所以,CryptoJS.SHA256是一个用于计算SHA256哈希值的函数。 #### 引用[.reference_title] - *1* [jspython使用CryptoJS.SHA256加密算法详解](https://blog.csdn.net/qq_35790269/article/details/82012963)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [前端利用CryptoJS实现数据信息的加密](https://blog.csdn.net/m0_70373529/article/details/130746216)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [crypto-js计算文件的sha256值](https://blog.csdn.net/weixin_30448685/article/details/96372851)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值