ใช้คีย์ส่วนตัว RSA เพื่อสร้างกุญแจสาธารณะหรือไม่


394

ฉันไม่เข้าใจอันนี้จริงๆ:

ตาม: http://www.madboa.com/geek/openssl/#key-rsaคุณสามารถสร้างพับลิกคีย์จากไพรเวตคีย์

openssl genrsa -out mykey.pem 1024
openssl rsa -in mykey.pem -pubout > mykey.pub

ความคิดแรกของฉันคือพวกมันถูกสร้างขึ้นมาเป็นคู่ คีย์ส่วนตัว RSA มีผลรวมหรือไม่ หรือกุญแจสาธารณะ?


1
สำหรับทุกคนที่ใช้ rsa และ openssl และต้องการเข้ารหัสไฟล์ขนาดใหญ่เช่น 5 Kbyte โปรดจำไว้ว่ารหัสสาธารณะควรเป็นสัดส่วนหรือใหญ่กว่าขนาดที่คุณต้องการเข้ารหัสมิฉะนั้นคุณจะได้รับ "ไฟล์ที่มีขนาดใหญ่เพื่อเข้ารหัสความผิด" ฉันสรุปว่าคุณสร้างรหัสส่วนตัวที่ค่อนข้างใหญ่และจริงจังและจากนั้นจะสร้างคีย์ส่วนตัวของคุณเพื่อให้คุณมีข้อมูลจำนวนมากที่จะทำงานกับ ฉันบอกคนที่ฉันรู้จักใน openssl เกี่ยวกับข้อบกพร่องและพวกเขาควรทำให้มันวนรอบตัวเองไม่เช่นนั้นคุณจะใช้เวลามากในการหาสาเหตุที่มันบ่นขนาด
Kent Hansen

10
ปัญหาที่ Kent Hansen อธิบายนั้นเกิดจากการใช้ RSA โดยตรงกับข้อมูลธรรมดาซึ่งไม่ควรทำในกรณีใด ๆ ด้วยเหตุผลด้านความปลอดภัย ให้ใช้รูปแบบการเข้ารหัสแบบไฮบริดที่ได้รับการวิเคราะห์เช่น RSA-KEM ( tools.ietf.org/html/rfc5990#appendix-A ) แทนด้วยรูปแบบการเข้ารหัสแบบสมมาตรที่ได้รับการรับรองเช่นการเข้ารหัสจากนั้น HMAC ที่ใช้กับข้อมูล
Daira Hopwood

สิ่งนี้อาจช่วยได้: jason4zhu.blogspot.jp/2014/10/…
Judking

เกี่ยวข้อง: serverfault.com/questions/52285/…
David Cary

คำตอบของ @ SteffenUllrich ในลิงก์นี้จะอธิบายว่าทำไม: security.stackexchange.com/questions/172274/…
bearzyj

คำตอบ:


577
openssl genrsa -out mykey.pem 1024

จะสร้างคู่คีย์สาธารณะ - ส่วนตัว ทั้งคู่ถูกเก็บไว้ในmykey.pemไฟล์ที่สร้างขึ้น

openssl rsa -in mykey.pem -pubout > mykey.pub

จะแยกคีย์สาธารณะและพิมพ์ออกมา นี่คือลิงค์ไปยังหน้าเว็บที่อธิบายสิ่งนี้ได้ดีกว่า

แก้ไข: ตรวจสอบส่วนตัวอย่างที่นี่ หากต้องการส่งออกส่วนสาธารณะของคีย์ส่วนตัว:

openssl rsa -in key.pem -pubout -out pubkey.pem

ในการรับพับลิกคีย์ที่ใช้งานได้สำหรับวัตถุประสงค์ SSH ให้ใช้ssh-keygen :

ssh-keygen -y -f key.pem > key.pub

50
มันสับสนว่าทุกคนในแบบฝึกหัดทุกแห่งต่างพูดว่าการใช้คำสั่ง openssl genrsa คุณจะสร้างคีย์ส่วนตัวเพราะพวกเขากำลังลืมว่ามันกำลังสร้างกุญแจ
สาธารณะ

15
@ Jaime คุณสามารถตำหนิพวกเขาได้จริงเหรอ? เอกสารอย่างเป็นทางการไม่ได้พูดอะไรเกี่ยวกับกุญแจสาธารณะ "DESCRIPTION: คำสั่ง genrsa สร้างคีย์ส่วนตัว RSA" openssl.org/docs/apps/genrsa.html
Despertar

124
@ Jaime นั่นเป็นเพราะไม่ได้ - genrsa สร้างคีย์ส่วนตัวเท่านั้นรหัสสาธารณะไม่ได้รับการจัดเก็บ อย่างไรก็ตามหากคุณมีคีย์ส่วนตัวคุณสามารถคำนวณ (รับ) กุญแจสาธารณะจากมันซึ่งเป็นสิ่งที่คำสั่งที่ 2 ข้างต้นทำ มันคำนวณไม่แยกกุญแจสาธารณะ
steveayre

13
@steveayre มันเป็นความเข้าใจของฉันว่าคีย์ RSA เป็นเพียงสอง exponents ( eและdในวรรณคดีทั่วไป) ไม่มีใครเป็นส่วนตัวหรือสาธารณะทางคณิตศาสตร์ฉลากเหล่านั้นเป็นฉลากที่ได้รับมอบหมายโดยพลการเมื่อมีการสร้าง พวกเขาสามารถกำหนดได้อย่างง่ายดายในสิ่งที่ตรงกันข้าม การสร้างจากที่อื่นเป็นปัญหาที่เทียบเท่ากัน .pemรูปแบบมีทั้งกลุ่มของข้อมูลรวมทั้งทั้งเลขยกกำลังและอื่น ๆ ทั้งปุ่มขวา?
lynks

13
@steveayre ส่วนใหญ่ผิด คอมโพเนนต์คีย์ RSA สาธารณะ (n, e) DO สร้างขึ้นด้วยและถูกฝังลงในไฟล์คีย์ RSA ส่วนตัวที่สร้างด้วยopenssl genrsaคำสั่ง ไฟล์สาธารณะที่แยกต่างหากไม่ได้ถูกสร้างในขั้นตอนเดียวกัน หากต้องการแยกพับลิกคีย์จากไฟล์ไพรเวตคีย์เป็นไฟล์พับลิกคีย์แยกกันคุณใช้openssl rsa -in private.pem -pubout -out public.pemคำสั่งของคุณ เมื่อคุณสร้างพับลิกคีย์ด้วยวิธีนี้มันจะถูกแยกออกจากไฟล์ไพรเวตคีย์ซึ่งไม่ถูกคำนวณ ดูคำตอบของฉันด้านล่างสำหรับรายละเอียดเพิ่มเติม
golem

273

ผู้คนกำลังมองหากุญแจสาธารณะของ SSH ...

หากคุณต้องการแยกรหัสสาธารณะสำหรับใช้กับ OpenSSH คุณจะต้องรับรหัสสาธารณะแตกต่างกันเล็กน้อย

$ ssh-keygen -y -f mykey.pem > mykey.pub

รูปแบบพับลิกคีย์นี้เข้ากันได้กับ OpenSSH ต่อท้ายกุญแจสาธารณะremote:~/.ssh/authorized_keysและคุณก็พร้อมที่จะไป


เอกสารจาก SSH-KEYGEN(1)

ssh-keygen -y [-f input_keyfile]  

-yตัวเลือกนี้จะอ่านไฟล์รูปแบบ OpenSSH ส่วนตัวและพิมพ์กุญแจสาธารณะ OpenSSH เพื่อ stdout


3
มันใช้งานได้เหมือนมีเสน่ห์! มันสร้างรูปแบบที่ Github ใช้! Github ไม่ได้ใช้รูปแบบ PEM คำตอบที่เห็นopenssl rsa -in key.pem -pubout -out pubkey.pemได้ชัดไม่ได้รับการยอมรับอย่างเห็นได้ชัดว่าการส่งออกของที่เป็นกุญแจสาธารณะในรูปแบบ pem ดังนั้นฉันได้รับข้อผิดพลาดนี้: "คีย์ไม่ถูกต้องจะต้องเริ่มต้นด้วย 'ssh-rsa' หรือ 'ssh-dss' ตรวจสอบว่าคุณกำลังคัดลอกครึ่งสาธารณะของคีย์" อย่างไรก็ตามssh-keygen -y [-f input_keyfile] สร้างรูปแบบที่ถูกต้องที่ Github ใช้
Devy

71

ในซอฟต์แวร์ส่วนใหญ่ที่สร้างคีย์ส่วนตัว RSA รวมถึงของ openssl คีย์ส่วนตัวจะแสดงเป็นวัตถุPKAP # 1 RSAPrivatekeyหรือตัวแปรบางอย่างของมัน:

A.1.2 ไวยากรณ์ของคีย์ส่วนตัว RSA

คีย์ส่วนตัว RSA ควรแสดงด้วยประเภท ASN.1
RSAPrivateKey:

  RSAPrivateKey ::= SEQUENCE {
      version           Version,
      modulus           INTEGER,  -- n
      publicExponent    INTEGER,  -- e
      privateExponent   INTEGER,  -- d
      prime1            INTEGER,  -- p
      prime2            INTEGER,  -- q
      exponent1         INTEGER,  -- d mod (p-1)
      exponent2         INTEGER,  -- d mod (q-1)
      coefficient       INTEGER,  -- (inverse of q) mod p
      otherPrimeInfos   OtherPrimeInfos OPTIONAL
  }

ที่คุณสามารถดูรูปแบบนี้มีจำนวนสาขารวมทั้งโมดูลัสและตัวแทนของประชาชนจึงเป็น superset ที่เข้มงวดของข้อมูลในRSA คีย์สาธารณะ


คุณหมายถึงว่าได้รับรหัสส่วนตัวมันมีความเป็นไปได้ทางคณิตศาสตร์ในการสร้างกุญแจสาธารณะหรือไม่? ความแข็งแกร่งของ RSA นั้นเป็นความจริงหรือไม่ที่ความเป็นไปไม่ได้ในการสร้างคีย์หนึ่งให้กับอีกคีย์
Raam

30
@Ramam: ไม่จุดแข็งของ RSA คือไม่สามารถสร้างรหัสส่วนตัวจากสาธารณะได้ สร้างรูปแบบสาธารณะส่วนตัวเป็นเรื่องไม่สำคัญ
ประธานาธิบดี James K. Polk

@GregS ทำไม คีย์ประกอบด้วยโมดูลัสและเลขชี้กำลัง หากเลขชี้กำลังอื่น ๆ สามารถคำนวณได้จากตัวเลขสองตัวนี้ RSA จะแตกได้ง่าย ไพรเวตคีย์ OpenSSL จะมีมากกว่าเลขชี้กำลังและโมดูลัสหรือไม่
Calmarius

1
@Calmarius: ใครบอกว่าสำคัญประกอบด้วยโมดูลัสและเลขยกกำลัง? นั่นจะเป็นคีย์ส่วนตัวที่น้อยที่สุด แต่โดยปกติแล้วคีย์ส่วนตัวจะมีส่วนประกอบอื่น ๆ เช่นปัจจัยสำคัญ อ่านคำตอบสำหรับรายละเอียด
ประธานาธิบดีเจมส์เค. โพลค์

1
@JamesKPolk นั่นไม่จำเป็นต้องเป็นเรื่องจริง หากเลขชี้กำลังสาธารณะมีขนาดใหญ่ (เช่นมีคุณสมบัติเช่นเดียวกับเลขชี้กำลังส่วนตัว) ดังนั้นรหัสสาธารณะอาจเป็นไปไม่ได้ที่จะสร้างใหม่ ห้องสมุดส่วนใหญ่ไม่รองรับสิ่งนี้ แต่ระบบเข้ารหัส RSA ไม่ต้องการให้คุณสร้างพับลิกคีย์จากคีย์ส่วนตัว
Maarten Bodewes

34

คำตอบของฉันด้านล่างยาวเล็กน้อย แต่หวังว่าจะให้รายละเอียดบางอย่างที่ขาดหายไปในคำตอบก่อนหน้า ฉันจะเริ่มต้นด้วยข้อความที่เกี่ยวข้องและสุดท้ายตอบคำถามเริ่มต้น

ในการเข้ารหัสบางสิ่งโดยใช้อัลกอริทึม RSA คุณต้องใช้โมดูลัสและการเข้ารหัส (สาธารณะ) คู่เลขชี้กำลัง (n, e) นั่นคือกุญแจสาธารณะของคุณ ในการถอดรหัสบางอย่างโดยใช้อัลกอริทึม RSA คุณต้องใช้โมดูลัสและการถอดรหัส (ส่วนตัว) เลขชี้กำลังคู่ (n, d) นั่นคือกุญแจส่วนตัวของคุณ

ในการเข้ารหัสบางสิ่งโดยใช้กุญแจสาธารณะ RSA คุณจะใช้ข้อความธรรมดาเป็นตัวเลขและยกให้เป็นโมดูลัสของ e:

ciphertext = ( plaintext^e ) mod n

ในการถอดรหัสบางอย่างโดยใช้คีย์ส่วนตัวของ RSA คุณจะต้องคำนวณตัวเลขของคุณเป็นตัวเลขและยกให้เป็นพลังของ d modulus n:

plaintext = ( ciphertext^d ) mod n

ในการสร้างคีย์ส่วนตัว (d, n) โดยใช้ openssl คุณสามารถใช้คำสั่งต่อไปนี้:

openssl genrsa -out private.pem 1024

ในการสร้างคีย์สาธารณะ (e, n) จากคีย์ส่วนตัวโดยใช้ openssl คุณสามารถใช้คำสั่งต่อไปนี้:

openssl rsa -in private.pem -out public.pem -pubout

หากต้องการตัดเนื้อหาของคีย์ private.pem ไพรเวตคีย์ RSA ที่สร้างโดยคำสั่ง openssl ด้านบนให้รันดังต่อไปนี้ (เอาต์พุตถูกตัดทอนเป็นเลเบลที่นี่):

openssl rsa -in private.pem -text -noout | less

modulus         - n
privateExponent - d
publicExponent  - e
prime1          - p
prime2          - q
exponent1       - d mod (p-1)
exponent2       - d mod (q-1)
coefficient     - (q^-1) mod p

คีย์ส่วนตัวไม่ควรประกอบด้วยคู่ (n, d) เท่านั้น? ทำไมถึงมีส่วนประกอบเพิ่ม 6 ตัว มันมี e (เลขชี้กำลังสาธารณะ) เพื่อให้คีย์ RSA สาธารณะสามารถสร้าง / แยก / มาจากคีย์ส่วนตัว RS. private.pem ส่วนประกอบที่เหลืออีก 5 รายการจะช่วยให้กระบวนการถอดรหัสเร็วขึ้น ปรากฎว่าด้วยการคำนวณล่วงหน้าและเก็บค่า 5 ค่าเหล่านี้คุณสามารถเพิ่มความเร็วในการถอดรหัส RSA ได้ด้วยปัจจัยที่ 4 การถอดรหัสจะทำงานได้โดยไม่ต้องใช้ส่วนประกอบทั้ง 5 แต่จะสามารถทำได้เร็วขึ้นหากคุณสะดวก อัลกอริธึมการเร่งความเร็วขึ้นอยู่กับทฤษฎีส่วนที่เหลือของจีนทฤษฏีจีนที่เหลือ

ใช่ private.pem คีย์ส่วนตัวของ RSA นั้นมีค่าทั้งหมด 8 ค่าจริง ๆ ไม่มีสิ่งใดถูกสร้างขึ้นทันทีเมื่อคุณเรียกใช้คำสั่งก่อนหน้า ลองรันคำสั่งต่อไปนี้และเปรียบเทียบผลลัพธ์:

# Convert the key from PEM to DER (binary) format
openssl rsa -in private.pem -outform der -out private.der

# Print private.der private key contents as binary stream
xxd -p private.der

# Now compare the output of the above command with output 
# of the earlier openssl command that outputs private key
# components. If you stare at both outputs long enough
# you should be able to confirm that all components are
# indeed lurking somewhere in the binary stream
openssl rsa -in private.pem -text -noout | less

โครงสร้างนี้ของคีย์ส่วนตัว RSA แนะนำโดยPKCS # 1 v1.5เพื่อเป็นทางเลือก ( ที่สอง ) ทางเลือก PKCS # 1 v2.0มาตรฐานไม่รวมค่า e และ d exponents จากการเป็นตัวแทนทางเลือกโดยสิ้นเชิง PKCS # 1 v2.1และv2.2เสนอการเปลี่ยนแปลงเพิ่มเติมเพื่อเป็นตัวแทนทางเลือกโดยเลือกรวมส่วนประกอบที่เกี่ยวข้องกับ CRT เพิ่มเติม

ในการดูเนื้อหาของ public.pem คีย์สาธารณะ RSA ให้เรียกใช้สิ่งต่อไปนี้ (ผลลัพธ์ถูกตัดทอนเป็นป้ายกำกับที่นี่):

openssl rsa -in public.pem -text -pubin -noout

Modulus             - n
Exponent (public)   - e

ไม่แปลกใจที่นี่ เป็นเพียงคู่ (n, e) ตามที่สัญญาไว้

ตอนนี้ในที่สุดก็ตอบคำถามเริ่มต้น: ตามที่ปรากฏข้างต้นคีย์ RSA ส่วนตัวที่สร้างขึ้นโดยใช้ openssl มีส่วนประกอบของทั้งกุญแจสาธารณะและกุญแจส่วนตัวและอีกมากมาย เมื่อคุณสร้าง / แยก / รับพับลิกคีย์จากไพรเวตคีย์ openssl จะคัดลอกสองคอมโพเนนต์เหล่านั้น (e, n) ลงในไฟล์แยกต่างหากซึ่งกลายเป็นพับลิกคีย์ของคุณ


คุณเขียน "เพื่อสร้างกุญแจสาธารณะ (d, n) จากกุญแจส่วนตัว ... " ไม่ควรเป็น "(e, n)" ขอบคุณสำหรับคำตอบที่ยอดเยี่ยม!
elactic

คุณกำลังเปรียบเทียบ (ภายนอก) 'ไวยากรณ์' ใน v1.5 กับความหมายในรุ่นที่ใหม่กว่า; ตรวจสอบ 2.0 # 11.1.2 และ 2.1 และ 2.2 # A.1.2 แล้วคุณจะเห็น n, e, d ยังคงปรากฏอยู่ (ดังคำตอบของ James Polk ที่ระบุไว้แล้ว)
dave_thompson_085

1
คำอธิบายที่น่าอัศจรรย์ ขอบคุณ
Francisco Albert

1
ดูเหมือนว่าตัวแทนของประชาชนeอยู่เสมอ 0x01000165537 มันอาจจะ defacto สำหรับการเลือกตัวแทนของประชาชนและนี่อาจเป็นเหตุผลในหน้าคนและเกือบทุกที่จะมีการอธิบายเป็นgenrsa to generate the private keyประชาชนคนหนึ่งค่อนข้างชัดเจน
แชมพู

ฉันสามารถคำนวณออก (n, E) เท่านั้นจาก (n, d)?
Flyq

21

รหัสสาธารณะไม่ได้ถูกจัดเก็บไว้ในไฟล์ PEM ตามที่บางคนคิด โครงสร้าง DER ต่อไปนี้มีอยู่ในไฟล์ Private Key:

openssl rsa - ข้อความ - ใน mykey.pem

RSAPrivateKey ::= SEQUENCE {
  version           Version,
  modulus           INTEGER,  -- n
  publicExponent    INTEGER,  -- e
  privateExponent   INTEGER,  -- d
  prime1            INTEGER,  -- p
  prime2            INTEGER,  -- q
  exponent1         INTEGER,  -- d mod (p-1)
  exponent2         INTEGER,  -- d mod (q-1)
  coefficient       INTEGER,  -- (inverse of q) mod p
  otherPrimeInfos   OtherPrimeInfos OPTIONAL
}

ดังนั้นมีข้อมูลเพียงพอที่จะคำนวณคีย์สาธารณะ (โมดูลัสและเลขชี้กำลังสาธารณะ) ซึ่งเป็นสิ่งที่openssl rsa -in mykey.pem -puboutทำ


ฉันเห็นว่ากุญแจสาธารณะไม่ได้ถูกเก็บไว้ที่นั่นแม้ว่าจะเป็นไปได้เช่นเดียวกับกุญแจส่วนตัว แต่ฉันไม่เห็นกุญแจส่วนตัวที่เก็บอยู่ที่นั่นด้วย! แต่ถ้าฉันแมวไฟล์ pem ฉันเห็นมันบอกว่ารหัสส่วนตัวและบาง ASCII
barlop

2
ไพรเวตคีย์ยังได้รับการตรวจสอบด้วยเช่นกันดูที่ฟิลด์ privateExponent คุณสามารถดูฟิลด์โดยใช้ openssl rsa -text -in mykey.pem
Uxio

2
รหัสสาธารณะจะถูกจัดเก็บจริงใน pem เพราะ pem ยังรวมถึง e และ d นั่นคือกุญแจสาธารณะ ซึ่งแตกต่างจาก algos บันทึกแยกรหัสสาธารณะ rsa ไม่สามารถคำนวณได้จากเพียงกุญแจส่วนตัว (d, n) มันมีเพียงเพราะรายละเอียด rsa ระบุว่าจะเก็บไว้กับคีย์ส่วนตัวและข้อมูลอื่น ๆ
Michael Chourdakis

1
อ้างคำตอบนี้มีอยู่ในทุกเจตนาและวัตถุประสงค์ที่ผิด ทั้งเลขชี้กำลังสาธารณะและโมดูลัสอยู่ในนั้นดังนั้นรหัสสาธารณะจึงปรากฏขึ้นอย่างแน่นอน ไม่จำเป็นต้องมีตัวแทนของประชาชนในการมีอื่น ๆ กว่าจะได้อย่างง่ายดายดึงคีย์สาธารณะสำหรับมันไม่มีโดยไม่ต้องคำนวณใด
Maarten Bodewes

1
@MaartenBodewes: คำตอบนั้นถูกต้อง สิ่งที่ยกมาถูกนำมาจาก RFC ที่เกี่ยวข้องเป็นค่าที่เก็บไว้สำหรับคีย์ส่วนตัว ค่าสองค่านั้นยัง / ใช้สำหรับการเข้ารหัสคีย์สาธารณะเท่านั้นไม่เปลี่ยนแปลงว่านี่เป็นข้อมูลคีย์ส่วนตัว ฉันได้เรียนรู้สิ่งนี้ทั้งหมดในช่วงสองวันที่ผ่านมาไม่ใช่โดยการถามคำถาม แต่โดยการค้นหาและอ่านมาตรฐานที่เกี่ยวข้อง ตอนนี้ฉันเข้าใจทุกอย่างเกี่ยวกับ ASN.1, DER, PEM และ RSA (อาจไม่เกี่ยวกับ RSA ทั้งหมด)
AlastairG

8

ที่นี่ในรหัสนี้ก่อนอื่นเรากำลังสร้างคีย์ RSA ซึ่งเป็นส่วนตัว แต่มันมีคู่ของกุญแจสาธารณะเช่นกันเพื่อที่จะได้รับกุญแจสาธารณะจริงของคุณเราก็แค่ทำสิ่งนี้

openssl rsa -in mykey.pem -pubout > mykey.pub

หวังว่าคุณจะได้รับมันสำหรับข้อมูลเพิ่มเติมตรวจสอบนี้


6

ประการแรกสรุปอย่างรวดเร็วในการสร้างคีย์ RSA

  1. สุ่มเลือกช่วงเวลาที่น่าจะเป็นแบบสุ่มสองขนาดที่เหมาะสม (p และ q)
  2. คูณสองจำนวนเข้าด้วยกันเพื่อสร้างโมดูลัส (n)
  3. เลือกเลขชี้กำลังสาธารณะ (e)
  4. ทำเลขคณิตกับจำนวนเฉพาะและเลขชี้กำลังสาธารณะเพื่อสร้างเลขชี้กำลังส่วนตัว (ง)

รหัสสาธารณะประกอบด้วยโมดูลัสและเลขชี้กำลังสาธารณะ

คีย์ส่วนตัวที่น้อยที่สุดจะประกอบด้วยโมดูลัสและเลขชี้กำลังส่วนตัว ไม่มีวิธีที่แน่นอนที่เป็นไปได้ในการคำนวณจากโมดูลัสที่รู้จักและเลขชี้กำลังส่วนตัวไปสู่เลขชี้กำลังสาธารณะที่สอดคล้องกัน

อย่างไรก็ตาม:

  1. รูปแบบคีย์ส่วนตัวที่ใช้งานได้จริงจะเก็บมากกว่า n และ d เสมอ
  2. โดยปกติแล้ว e ไม่ถูกสุ่มเลือกโดยใช้หนึ่งในค่าที่รู้จักกันดีจำนวนหนึ่ง ถ้า e เป็นหนึ่งในค่าที่รู้จักกันดีและคุณรู้ดีแล้วมันจะง่ายที่จะหา e ด้วยการลองผิดลองถูก

ดังนั้นในการติดตั้ง RSA ที่ใช้งานได้จริงคุณสามารถรับกุญแจสาธารณะได้จากรหัสส่วนตัว มันจะเป็นไปได้ที่จะสร้างระบบเข้ารหัสที่ใช้ RSA โดยที่มันเป็นไปไม่ได้ แต่ก็ไม่ใช่สิ่งที่ทำ


1
Use the following commands:

1. openssl req -x509 -nodes -days 365 -sha256 -newkey rsa:2048 -keyout mycert.pem -out mycert.pem

Loading 'screen' into random state - done
Generating a 2048 bit RSA private key
.............+++
..................................................................................................................................................................+++
writing new private key to 'mycert.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.

2. If you check there will be a file created by the name : mycert.pem

3. openssl rsa -in mycert.pem -pubout > mykey.txt
writing RSA key

4. If you check the same file location a new public key : mykey.txt will be created.

1
นี่มันโง่ ไม่จำเป็นต้องใช้ความพยายามเป็นพิเศษในการสร้างใบรับรองที่ไร้ประโยชน์เมื่อคุณต้องการเป็นกุญแจคู่ สำหรับคำถามอื่น ๆ ที่คุณต้องการใบรับรองนี่อาจเป็นคำตอบ
dave_thompson_085
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.