簡體   English   中英

Tor Stem:公鑰在隱藏的服務描述符中不匹配

[英]Tor Stem: public key don't match one in hidden servce descriptor

我正在嘗試獲取我創建的隱藏服務的公鑰。 有兩種方法,一種是我擁有的私鑰,另一種是訪問隱藏的服務描述符並獲取公鑰字段。

我寫了一個python腳本來測試兩者。 但是,它們是不同的!

這是腳本(pkey是之前從Tor控制器生成的測試私鑰)

import stem
from stem.control import Controller

from Cryptodome.PublicKey import RSA

from base64 import b64encode

controller = Controller.from_port(port=9051)

controller.authenticate()

pkey="MIICXQIBAAKBgQCsqrc5jvobvNiZ4g0IdoxkQmYtFtRqGMeGCfh8IZ1s7IJ2owzrZ+8GE+HJhBr1YYFJ/9UegD9APfnybIfgmVY+PCxNlE16uMreigogAqpN4Vp8aic0s/6sXbf9EyHkafcHdMX3N3LUYhOQZfI02zNjUTRSkHp9jS+MFcWwOeYMzwIDAQABAoGANX5uZZa2RgGr2YD/KLARrr4jibSY+oXSyuQr58lCTIy5nqfFSOlaVDe0rAoRkBQ1SgfIrzpsXirVVRXqwtq+rOcRjVT4cRZnb3MNRqSFiqSocL2/TkJg97pXKfGgLkoopsGfvrgXmlpI03w8TMwbcSHvObUkC9xKqcKABtdYfQECQQDSQgyvh7YnQ2qdYeFYc9f9kT3XaUjYMgel7Zq8GAQEmsZ3YqW/vDmNVYsnQj/ZHyS/VwKFyE66jw/po+p8bBKZAkEA0jsX3AZyrd24lVkK/5gcMQLfRuOyJDtEjNXUNWxS2axUoVDBIRcArsa5IKG4yRYYRgIVSEDLxGxciTWgU5MjpwJAShTRiWskp/Ld9rPNBTBT0tjA1EwZSWtfPHxaP5mqmMC72sacJdE46e5RCDUUb/jEJtKOZfqsmpjbf3Oso8gkSQJBAJkBrUHT548nOfpojhqsSIhbQMnFWpgIEsI1tncTWdFXHVky/vzoUvThaUeYrHaeABij1314u1VAULEEOKXbBy0CQQDJJeDolidHG8UkWISq2jP6QIkpqOx3E6zxMNXAKwfz/O+yyanNtL1+MpFbk0H5n1fUhSDjR5daziUcmU93NOW9"


response = controller.create_ephemeral_hidden_service([9000, 9001],key_type ='RSA1024',key_content =pkey,await_publication=True)
onionAddr = response.service_id
#privKey  = pkey#response.private_key

print('onion: '+onionAddr)
print("\nPrivate Key: ")
print(pkey)
print("================")

pkey ="-----BEGIN RSA PRIVATE KEY-----\n"+pkey+"\n-----END RSA PRIVATE KEY-----"
privKeyObj = RSA.importKey(pkey)

#pubKey = b64encode(privKeyObj.publickey().exportKey('DER',pkcs=8))
pubKey = privKeyObj.publickey().exportKey('PEM',pkcs=1).decode()
print(pubKey)

print("\n\n\n HSD response:")
print(controller.get_hidden_service_descriptor(onionAddr+".onion"))

我從私鑰獲得的公鑰是:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCsqrc5jvobvNiZ4g0IdoxkQmYt
FtRqGMeGCfh8IZ1s7IJ2owzrZ+8GE+HJhBr1YYFJ/9UegD9APfnybIfgmVY+PCxN
lE16uMreigogAqpN4Vp8aic0s/6sXbf9EyHkafcHdMX3N3LUYhOQZfI02zNjUTRS
kHp9jS+MFcWwOeYMzwIDAQAB
-----END PUBLIC KEY-----

隱藏服務描述符中的一個是:

-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBAKyqtzmO+hu82JniDQh2jGRCZi0W1GoYx4YJ+HwhnWzsgnajDOtn7wYT
4cmEGvVhgUn/1R6AP0A9+fJsh+CZVj48LE2UTXq4yt6KCiACqk3hWnxqJzSz/qxd
t/0TIeRp9wd0xfc3ctRiE5Bl8jTbM2NRNFKQen2NL4wVxbA55gzPAgMBAAE=
-----END RSA PUBLIC KEY-----

進行一些搜索后,我發現RSA的密鑰格式不同。 我試圖使格式匹配,但我沒有運氣!

如何解決呢?

我錯了,從一開始它們是相同的,只是編碼的版本不同。 PyCryptoDome可以處理這種編碼差異。 如果兩個鍵都導入鍵對象並進行比較,則它們相等

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM