使用gmssl 计算gb35114 认证signal1
时间: 2023-07-11 13:28:52 浏览: 95
GB/T 35114-2017是一种基于哈希函数和非对称加密算法的数字签名算法,它的签名过程包含了哈希计算和非对称加密两个步骤。下面是使用gmssl库计算GB/T 35114-2017数字签名的示例代码:
```python
import gmssl
# 输入要签名的数据
data = b'signal1'
# 计算哈希值
hash_value = gmssl.sm3.hash(data)
# 加载私钥
pri_key = gmssl.sm2.PriKey()
pri_key.load_pkcs8_der(open('/path/to/private_key.der', 'rb').read())
# 进行数字签名计算
signature = gmssl.func.gm_sign(hash_value, pri_key, gmssl.SignScheme.SM2_WITH_SM3_2)
# 打印签名结果
print(signature.hex())
```
其中,`/path/to/private_key.der` 是指存储私钥的DER编码格式的文件路径。需要注意的是,在实际使用中,需要将签名结果和计算哈希值的数据一起发送给接收方,接收方在验证签名时需要用到发送方的公钥。
相关问题
C语言 使用gmssl 计算gb35114 认证signal1
下面是使用gmssl库在C语言中计算GB/T 35114-2017数字签名的示例代码:
```c
#include <stdio.h>
#include <string.h>
#include <gmssl/sm3.h>
#include <gmssl/sm2.h>
#include <gmssl/error.h>
int main(int argc, char *argv[])
{
const char *data = "signal1";
uint8_t hash_value[32];
uint8_t signature[256];
size_t signature_len = sizeof(signature);
// 计算哈希值
sm3_context ctx;
sm3_init(&ctx);
sm3_update(&ctx, data, strlen(data));
sm3_finish(&ctx, hash_value);
// 加载私钥
FILE *fp = fopen("/path/to/private_key.der", "rb");
sm2_key pri_key;
sm2_key_init(&pri_key);
int ret = sm2_key_parse_pkcs8(&pri_key, fp);
fclose(fp);
if (ret != 1) {
error_print();
return -1;
}
// 进行数字签名计算
ret = gmssl_sm2_sign(hash_value, sizeof(hash_value),
signature, &signature_len,
&pri_key, SM2_DEFAULT_ID);
if (ret != 1) {
error_print();
return -1;
}
// 打印签名结果
for (size_t i = 0; i < signature_len; i++) {
printf("%02x", signature[i]);
}
printf("\n");
return 0;
}
```
其中,`/path/to/private_key.der` 是指存储私钥的DER编码格式的文件路径。需要注意的是,在实际使用中,需要将签名结果和计算哈希值的数据一起发送给接收方,接收方在验证签名时需要用到发送方的公钥。
使用gmssl 计算gb34115 认证signal1
可以使用如下代码使用gmssl库计算GB/T 34115-2017哈希值并进行数字签名认证:
```python
import gmssl
# 输入要签名的数据
data = b'signal1'
# 计算哈希值
hash_value = gmssl.sm3.hash(data)
# 加载私钥
pri_key = gmssl.sm2.PriKey()
pri_key.load_pkcs8_der(open('/path/to/private_key.der', 'rb').read())
# 进行数字签名计算
signature = pri_key.sign(hash_value)
# 打印签名结果
print(signature.hex())
```
其中,`/path/to/private_key.der` 是指存储私钥的DER编码格式的文件路径。需要注意的是,在实际使用中,需要将签名结果和计算哈希值的数据一起发送给接收方,接收方在验证签名时需要用到发送方的公钥。
阅读全文