-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcreateCertificate.py
54 lines (43 loc) · 1.55 KB
/
createCertificate.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# -*- coding: utf-8 -*-
# @Time : 2021/4/19 9:20
# @Author : AA8j
# @FileName: createCertificate.py
# @Software: PyCharm
# @Blog :https://blog.csdn.net/qq_44874645
import random
import rsa
from 算法.加密算法.改造https.RSA import sign
from 算法.加密算法.改造https.sendAndRec import send
from 算法.加密算法.改造https.sha_224 import sha_224
def rsa_create_key():
print('正在生成密钥对...', end='')
# 生成密钥对
(public_key, private_key) = rsa.newkeys(1024)
prv_key = private_key.save_pkcs1().decode()
pub_key = public_key.save_pkcs1().decode()
print('完成:', prv_key, pub_key)
return prv_key, pub_key
def digital_signature(num, key):
print('正在生成数字签名...', end='')
# 摘要生成
abstract = sha_224(num)
# 私钥签名
sign_bytes = sign(abstract, key)
# 返回数字签名
print('完成:', sign_bytes)
return sign_bytes
def create_certificate():
# 利用rsa算法生成密钥对
prv_key, pub_key = rsa_create_key()
# 10位伪随机数生成
random_num = str(random.randint(1000000000, 10000000000))
# 数字签名生成(私钥加密)
digital_signature_result = digital_signature(random_num, prv_key)
print('证书生成完成:', [prv_key, [pub_key, digital_signature_result, random_num]])
# 私钥+证书(公钥+数字签名+随机数)
return [prv_key, [pub_key, digital_signature_result, random_num]]
if __name__ == '__main__':
a = create_certificate()
for i in a:
print(i)
send(a[1])