haas506 2.0开发教程 - uhashlib - 哈希算法
- 简介
- 案例说明
- 案例代码
- 测试结果
- class - uhashlib
- hmacsha1- 创建一个带密钥的sha1哈希对象
- sha1 - 创建一个SHA1哈希对象
- sha256 - 创建一个SHA256哈希对象
- md5 - 创建一个MD5哈希对象
- update - 将更多的数据加到散列队列中
- digest - 返回通过哈希传递的所有数据的散列
简介
哈希(Hash)它是一种基础数据结构。Hash 表是一种特殊的数据结构,它与数组、链表以及二叉排序树等相比较有很明显的区别,但它又是在数组和链表的基础上演化而来,既具有数组的优点,又具有链表的优点。能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。应用了函数映射的思想将记录的存储位置与记录的关键字关联起来,从而能够很快速地进行查找。
案例说明
本案例介绍haas哈希算法接口,实现二进制数据散列算法,支持sha256,sha1,MD5。
案例代码
main.py
import uhashlib
import ubinascii
import utime
# 工具网站 http://encode.chahuo.com/# 创建hash对象
hash_obj = uhashlib.hmacsha1()
#将数据加到散列队列中
hash_obj.update("haas506","hmacsha1example")
# 返回数据的散列
data = hash_obj.digest()
print(data)
#将二进制数据转换为十六进制字符串表示
hex_msg = ubinascii.hexlify(data)
print(hex_msg)
while True:utime.sleep(1)
测试结果
b'JUh\xb6\xf2J\x96\xbf\xa8f\xe6$\xc2\x81s\xe2\xcd\xec\xab\x95'b'4a5568b6f24a96bfa866e624c28173e2cdecab95'
class - uhashlib
hmacsha1- 创建一个带密钥的sha1哈希对象
参数原型:
- hash_obj = uhashlib.hmacsha1(key,bytes)
参数说明:
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
key | bytes | 否 | 加密密钥 |
bytes | bytes | 否 | 可在创建时传入bytes数据,也可通过update方法更新 |
返回值:
- 加密后的SHA1哈希对象
sha1 - 创建一个SHA1哈希对象
参数原型:
- hash_obj = uhashlib.sha1(bytes)
参数说明:
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
bytes | bytes | 否 | 可在创建时传入bytes数据,也可通过update方法更新 |
返回值:
- SHA1哈希对象
sha256 - 创建一个SHA256哈希对象
参数原型:
- hash_obj = uhashlib.sha256([bytes])
参数说明:
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
bytes | bytes | 否 | 可在创建时传入bytes数据,也可通过update方法更新 |
返回值:
- SHA256哈希对象。
md5 - 创建一个MD5哈希对象
参数原型:
- hash_obj = uhashlib.md5(bytes)
参数说明:
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
bytes | bytes | 否 | 可在创建时传入bytes数据,也可通过update方法更新 |
返回值:
- MD5哈希对象
update - 将更多的数据加到散列队列中
参数原型:
- hash_obj.update(bytes)
参数说明:
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
bytes | bytes | 否 | 需要被加密的数据 |
digest - 返回通过哈希传递的所有数据的散列
参数原型:
- hash_obj.digest()
注意:调用此方法后,无法再将更多的数据送入散列。
返回值:
- 返回加密后字节类型的数据