ปัญหา
สมมติว่าฉันได้รับลายเซ็น $(ร,ส)$คีย์สาธารณะที่เกี่ยวข้องและข้อความที่ลงนาม ฉันไม่สามารถเข้าถึงคีย์ส่วนตัวได้ ฉันต้องรู้ว่าอะไรคือ ท่อง
(รหัสการกู้คืน) คือที่สอดคล้องกับรหัสสาธารณะ สิ่งหนึ่งที่ฉันทำได้คือกู้คืนรหัสสาธารณะจากลายเซ็นโดยใช้ห้องสมุดจำนวนมากและพยายามทำทุกวิถีทาง ท่อง
ค่า (0 หรือ 1 น้อยมาก 2 หรือ 3) แต่ฉันสงสัยว่าทำไมฉันถึงลองหลายตัวเลือกแทนที่จะคำนวณโดยตรง
ตอนนี้ตามบทความนี้...
http://coders-errand.com/ecrecover-signature-verification-ethereum/
... ฉันสามารถกลับสูตรและเติมค่าคงที่ทั้งหมดของ secpk256k1
เส้นโค้ง:
https://en.bitcoin.it/wiki/Secp256k1
ดังนั้นฉันจึงพยายามคิดว่าจะดำเนินการอย่างไร ข้อแตกต่างระหว่างบทความกับสถานการณ์ของฉันคือฉันมีรหัสสาธารณะอยู่แล้ว $คิว$. ฉันสนใจใน $y$ความเท่าเทียมกันของจุด $[k]G$ ($X$ ในบทความ) ฉันสามารถคำนวณ $X$ เพราะฉันมี $คิว$, $R$, $S$ และค่าคงที่ทั้งหมดที่กำหนดในวิกิ แต่ฉันจะต้องคำนวณสองจุดอีกครั้ง:
\begin{จัด}
X &= \frac{(eG + rQ)}{s} \bmod n\
-X &= \frac{(eG + rQ)}{-s} \bmod n\
\end{แนว}
แต่ความเท่าเทียมกันที่ฉันสนใจคือ -
. อย่างไรก็ตาม ตอนนี้ฉันมีสองจุด โดยที่ 1 ไม่ถูกต้องเพราะจะเป็นของอีกจุดหนึ่ง ถาม
และฉันก็ไม่รู้วิธีตรวจสอบว่าอันไหนถูกต้อง นอกจากนี้ ตอนนี้ฉันกำลังตรวจสอบจุดสองจุดอีกครั้ง ซึ่งเป็นสิ่งที่ฉันต้องการป้องกันตั้งแต่แรก
คำถาม
คำถามของฉันคือวิธีเดียวที่จะกู้คืนรหัสสาธารณะสำหรับหลายรายการ ท่อง
ค่าและจำกัดให้แคบลง ท่อง
สำหรับรหัสสาธารณะของคุณเอง? หรือสามารถคิดสูตรได้ที่ไหน ท่อง
อยู่ด้านหนึ่งและอีกเงื่อนไขอยู่อีกด้านหนึ่ง เช่น $ท่องจำ$ $=$ $คิว$... $G$... $r$ $s$... $e$