当前位置:   article > 正文

JavaScript 中CryptoJS.SHA256对应 Python 版本

cryptojs.sha256

摘要算法

摘要算法又称哈希/散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。算法不可逆。

散列/哈希算法有:

  1. SHA1 SHA224 SHA256 SHA384 SHA512 MD5
  2. HmacSHA1 HmacSHA224 HmacSHA256 HmacSHA384 HmacSHA512 HmacMD5 PBKDF2

SHA1

SHA(Secure Hash Algorithm)是由美国专门制定密码算法的标准机构—— 美国国家标准技术研究院(NIST)制定的。

SHA系列算法的摘要长度分别为:SHA为20字节(160位,通常用一个40位的16进制字符串表示)、SHA256为32字节(256位)、 SHA384为48字节(384位)、SHA512为64字节(512位),由于它产生的数据摘要的长度更长,因此更难以发生碰撞,因此也更为安全,它是未来数据摘要算法的发展方向。由于SHA系列算法的数据摘要长度较长,因此其运算速度与MD5相比,也相对较慢。

SHA1的应用较为广泛,主要应用于CA和数字证书中,另外在互联网中流行的BT软件中,也是使用SHA1来进行文件校验的。

示例:

  • PHP
  1. <?php
  2. echo sha1('123456'); //7c4a8d09ca3762af61e59520943dc26494f8941b
  • CryptoJS
  1. CryptoJS.SHA1('123456').toString();
  2. //"7c4a8d09ca3762af61e59520943dc26494f8941b"
  3. CryptoJS.SHA256('123456').toString();
  4. //"8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92"
  • Python
  1. import hashlib
  2. # sha224, sha256, sha384, sha512同理
  3. sha1 = hashlib.sha1()
  4. sha1.update('123456'.encode('utf-8'))
  5. print(sha1.hexdigest())
  6. # 7c4a8d09ca3762af61e59520943dc26494f8941b

也就是说JavaScript的CryptoJS.SHA256()函数,在 Python 中对应的版本是hashlib.sha256(),详情可以看下下面的两个示例代码

js_Sha256_demo.js

  1. var appKey = "qew121fdf";
  2. var qa_secretKey = "6123wkwqjkewjkbej";
  3. var secretKey = qa_secretKey;
  4. var timestamp = "" + Math.round(new Date().getTime());
  5. console.log("timestamp=" + timestamp)
  6. var signStr = "appKey=" + appKey + "&appSecret=" + secretKey + "&expireTime=" + timestamp
  7. var sign = "" + CryptoJS.SHA256(signStr)
  8. console.info("signStr = " + signStr)
  9. //写到 postman 的环境变量中
  10. pm.environment.set("ak", appKey);
  11. pm.environment.set("et", timestamp);
  12. pm.environment.set("sign", sign);

python_sha256_demo.py

  1. import time
  2. import hashlib
  3. from logzero import logger
  4. # 获取 token
  5. appKey = "qew121fdf"
  6. qa_secretKey = "6123wkwqjkewjkbej"
  7. secretKey = qa_secretKey
  8. timestamp = str(int(time.time() * 1000))
  9. signStr = "appKey=" + appKey + "&appSecret=" + secretKey + "&expireTime=" + timestamp
  10. # sha224, sha256, sha384, sha512同理
  11. sha1 = hashlib.sha256()
  12. sha1.update(signStr.encode('utf-8'))
  13. self.ak = appKey
  14. self.et = timestamp
  15. self.sign = sha1.hexdigest()
  16. logger.info("ak: {}, et: {}, sign: {}".format(self.ak, self.et, self.sign))

常用库介绍

Crypto-JS

GitHub - brix/crypto-js: JavaScript library of crypto standards.

CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加密算法。目前已支持的算法包括:

  • MD5
  • SHA-1
  • SHA-256
  • AES
  • Rabbit
  • MARC4
  • HMAC
    • HMAC-MD5
    • HMAC-SHA1
    • HMAC-SHA256
  • PBKDF2

hashlib

Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。

在线工具

1、在线加密解密
在线加密解密

参考:密码学之摘要算法 - 飞鸿影 - 博客园

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/872995
推荐阅读
相关标签
  

闽ICP备14008679号