python 举例三种计算SM3 HASH方法
时间: 2023-08-01 12:11:16 浏览: 220
SM3_hash.zip
SM3是中国制定的密码算法标准,是一种哈希函数,可以用于数字签名、随机数生成、消息认证码等方面。在Python中,可以使用不同的库或者方法来计算SM3 HASH值,下面给出三种不同的示例。
1. 使用Python标准库中的hashlib模块
```python
import hashlib
def sm3_hash(data):
h = hashlib.new('sm3')
h.update(data.encode('utf-8'))
return h.hexdigest()
hash_val = sm3_hash('hello world')
print(hash_val)
```
2. 使用第三方库pysm3
```python
from pysm3 import sm3_hash
hash_val = sm3_hash('hello world'.encode('utf-8'))
print(hash_val)
```
3. 使用第三方库pycryptodome
```python
from Crypto.Hash import SM3
def sm3_hash(data):
h = SM3.new(data.encode('utf-8'))
return h.hexdigest()
hash_val = sm3_hash('hello world')
print(hash_val)
```
这三种方法都可以计算SM3 HASH值,只是实现方式不同。其中,第一种方法使用Python标准库中的hashlib模块,需要调用`new`方法创建一个SM3对象,并使用`update`方法来更新数据,最后调用`hexdigest`方法来获取HASH值。第二种方法使用第三方库pysm3,直接调用`sm3_hash`方法即可,不需要创建对象。第三种方法使用第三方库pycryptodome,需要引入`Crypto.Hash`模块,创建一个SM3对象,使用`new`方法来更新数据,最后调用`hexdigest`方法来获取HASH值。
阅读全文