Meta: สิ่งนี้ไม่ได้เกี่ยวกับการเข้ารหัส แต่เป็นการใช้เครื่องมือสำหรับการประมวลผลข้อมูลที่เกี่ยวข้องกับการเข้ารหัสลับเพียงบางส่วนเท่านั้น แต่เนื่องจากไม่มีใครลงคะแนนให้ปิด (ที่ฉันเห็น) ฉันจะดำเนินการต่อ สามารถลบได้หากจำเป็น
ไม่ตรงนัก แต่มีตัวเลือกคำสั่งในการสร้างข้อมูล ASN.1 ตามอำเภอใจ ซึ่งสามารถปรับให้เข้ากับสิ่งนี้ได้ด้วยการทำงานเพียงเล็กน้อย หากคุณมีค่าส่วนตัวที่ต้องการใน 'ธรรมดา' hex: บน Unix (หากไม่ใช่ hex แล้ว) คุณสามารถแปลงด้วย xxd -p -c32
หรือ od -An -tx1 | tr -d ' \n'
หรือคล้ายกัน บน Windows คุณจะเป็นตัวของตัวเอง กำหนดไฟล์ที่มีเนื้อหาต่อไปนี้ ยกเว้นการแทนที่ค่าส่วนตัวที่คุณต้องการ:
asn1=SEQ:pkcs8c
[pkcs8c]
เวอร์ชั่น=INT:0
algid=SEQ:algid
data=OCTWRAP,SEQ:sec1
[อัลจิด]
alg=OID:id-ecPublicKey
parm=OID:prime256v1
[วินาทีที่ 1]
เวอร์ชั่น=INT:1
privkey=FORMAT:HEX,OCT:0123456789ABCDEFFEDCBA98765432100123456789ABCDEFFEDCBA9876543210
แล้ว
openssl asn1parse -genconf ชื่อไฟล์ -noout [-out derfile]
จะสร้างรูปแบบที่ชัดเจนของ PKCS8 ใน DER และต่อท้าย | opensl pkey - แจ้ง der
จะแปลงเป็น PEM หรือบน Unix คุณสามารถแปลงเป็น PEM 'ด้วยตนเอง' ด้วย ... | { printf '%s\n' '-----BEGIN คีย์ส่วนตัว-----'; opensl base64; printf '%s\n' '----- สิ้นสุดคีย์ส่วนตัว-----'; }
อีกทางหนึ่งและในทางแฮ็ก การเข้ารหัส DER ของโครงสร้างที่อธิบายไว้ข้างต้นเป็นค่าคงที่ทั้งหมด ยกเว้นค่าไพรเวตที่เกิดขึ้นหลังสุด คุณจึงสามารถเชื่อมส่วนค่าคงที่เข้ากับค่าไพรเวตเพื่อรับ DER ที่เคลียร์ด้วย PKC8 แล้วแปลงเป็น PEM ดังกล่าวข้างต้น:
# บน Unix กำหนด 32 ไบต์เป็นไบนารีในไฟล์ rawfile:
printf '\x30\x41\x02\x01\x00\x30\x13\x06\x07\x2a\x86\x48\xce=\x02\x01\x06\x08\x2a\x86\x48\xce=\x03 \x01\x07\x04\x27\x30\x25\x02\x01\x01\x04\x20'; ไฟล์ raw ของแมว;
# สร้าง DER และใส่ใน { } หรือ ( ) และส่งผลลัพธ์ไปที่
# pkey -inform der หรือทางเลือกด้วยตนเองด้านบนแปลงเป็น PEM