是否创建RSA SHA256(DNSSEC有效)密钥?

2024-09-30 03:25:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用Python为DNSSEC创建自己的RSA/Sha256密钥生成器。 我知道keygen(dnssec keygen)中已经有了一个内部版本,但是我想自己构建它。在

接受的密钥如下所示:

Private-key-format: v1.2

   Algorithm:       8 (RSASHA256)
   Modulus:         wVwaxrHF2CK64aYKRUibLiH30KpPuPBjel7E8ZydQW1HYWHfoGm
                    idzC2RnhwCC293hCzw+TFR2nqn8OVSY5t2Q==
   PublicExponent:  AQAB
   PrivateExponent: UR44xX6zB3eaeyvTRzmskHADrPCmPWnr8dxsNwiDGHzrMKLN+i/
                    HAam+97HxIKVWNDH2ba9Mf1SA8xu9dcHZAQ==
   Prime1:          4c8IvFu1AVXGWeFLLFh5vs7fbdzdC6U82fduE6KkSWk=
   Prime2:          2zZpBE8ZXVnL74QjG4zINlDfH+EOEtjJJ3RtaYDugvE=
   Exponent1:       G2xAPFfK0KGxGANDVNxd1K1c9wOmmJ51mGbzKFFNMFk=
   Exponent2:       GYxP1Pa7CAwtHm8SAGX594qZVofOMhgd6YFCNyeVpKE=
   Coefficient:     icQdNRjlZGPmuJm2TIadubcO8X7V4y07aVhX464tx8Q=

http://tools.ietf.org/html/rfc5702

我的Python脚本可以生成RSA部分,但我不知道如何将其与SHA256混合:

^{pr2}$

顺便说一句:这个脚本生成的所有关键部分都只有数字,没有随机字母,就像有效的密钥一样。在


Tags: key版本脚本format密钥privatersaalgorithm
2条回答

我的建议是:

#!/usr/bin/python

import ldns

dnskey = ldns.ldns_key.new_frm_algorithm(ldns.LDNS_RSASHA256, 2048)
print(str(dnskey))
Private-key-format: v1.2
Algorithm: 8 (RSASHA256)
Modulus: tZqeHDj2fvrGZrrZ+t+8lJmbKijaBjyeKg+8ccWl6XuEolbP/L+0UaV6TOEzWOIPuA/4bGEUYJF0/ITY3s/m2X1Zaf5Tcr7OwbIGg8JlBB+WrJ1pd0n48vg1ivdh27OvTehwNA+dx04V0NN1oCF0aGGv0XoIhVpLu8NgMjs3K0ZWtwUGFhRYpSKKkdZXf08GolpnnjMS/WMEEPDWEUAEv5T2ys9EhVNc3zm2eE+kNxtrF3ueldz8JPZHxJbm2H50mYPSvQsIXFxjdMPErYvs6Xixa/YtucCHwLmpYRxSESlnxZ5AhcusxiiyCyxsF63yd3MpoI5C1X//xEhr6OB2iw==
PublicExponent: AQAB
PrivateExponent: A2AGRDwCyMVcXphmaLUzygc4zQXJV4hU4C8+r1afCMHU6zd10hq1/TZ4GWmuDJ7W7/LMCSecu1a4t+C4LxvqDGy59rBVWLKXIR5v5I7+VZ9Iq5iZVzA2wj0+sYB7fxvNzELfovgPVJ7s5N6pNvqoMTBvlhMQiXnuImU1KnnTQqiZ+Iegcc4v6R+WoJVysjVxcGa4gdjD5yiZej+gPGHMCJqUur4utYDb01p0VOm15gAbBiRQDhnS1xXLbyKv8svLr/NI1jEpkDeuLU7LbZJLFVB52YSZgRTfqAlKUY9oB7KHY4wjA8SxxqRBQ1gcEsAogSSasOhjLTuy6EnQ3RN4kQ==
Prime1: 5Pwr5q3MJshI1Jpy+XSQeP2zCNe1lgiqqiUmRWkpe02qUWovoGLdSQjfsyiS1Al4uj/TddNWoXHerUMCZgJ+3Q5SvrieHpJwsAfQH72a06FeBjbbf0xod4Jrs14zUeB1a0aNB+v6bI5CGkbTIh2339LcfYyWG8dw6t8iANLMb1c=
Prime2: ywdwP3liUR1FYC0ttmPU6A215FS5pwIQ6e09pGlygjbv1JmZ3w0dGhkhVJL8iZ5KnrcCEzwI44vdfAtu3QDt1c+Bn0RSD8BpTlTJdBkyHfzzwDoN2w1sFe/rGfvSYyncHNkf0Mqj8pdQ9tpW46XXH2aP+zVfH5FyrX0rOHSW1e0=
Exponent1: QamSSTbjSOe8AsM7Xw8u8pMFiO6aUqivj9TRUawjSgluYqRJfft7qxrRUwW6fPUuWnI9CBePSwJlMVf60xe6G1elIK2+IdQqXkAPTVrIkBFA7hVDAhD+D+8lRS0pGDx+T0HO5Uuk5wYwLGrM1oahGJzVv2bWEKczWRadIJFSMEc=
Exponent2: fRUAGpr173NRIoey+gNXT//iZ+Gq3zFuqi/3Iiu02HRwHVLkcX7qxwFkf25vF3nmDxJAvQjnkQjCU4HXs2C3JlrJSQ4WYI3yUsf5tQUw0zjcEzmw/5utU3aUKVXzsBRB/6Pk7gVqLDL9Npgdn/K0LixJ2EJxcElzlV7gGc/6faE=
Coefficient: 11MhOHYowmSXQGZhv4cJk9ZYupHuGbzqj+qv10xOuFWbvPGnkKAmuxUJ5MeYhFS/rZQ+VjroDh0sAPe7ycX1lyyn2KWH8/92tVoy77pnJvWyxBxZCKWFK2p1rGOfxhCjyyzOlQ071uv0CeloK1lsvlE9tJgseCcP4QQr9Qec6gA=

例如,要在debian(buster)下使用,您需要安装包python3-ldns。在

问题由OP,but in the question itself回答。以下文本的副本。

答案很简单-通过修改键串:

keystring = KEYVORLAGE.format( 
    base64.standard_b64encode(str(key.n)), 
    base64.standard_b64encode(str(key.e)), 
    base64.standard_b64encode(str(key.d)), 
    base64.standard_b64encode(str(key.p)), 
    base64.standard_b64encode(str(key.q)), 
    base64.standard_b64encode(str(expo1)), 
    base64.standard_b64encode(str(expo2)), 
    base64.standard_b64encode(str(key.u)))

相关问题 更多 >

    热门问题