Score:3

จำนวน Bits/Bytes เป็นพับลิกคีย์ โดยพิจารณาจากการเข้ารหัส

ธง in

ฉันมีปัญหาในการทำความเข้าใจว่าขนาด "บิต/ไบต์" ของคีย์สาธารณะคืออะไร คุณจะทำงานอย่างไร และแม้แต่ความหมายของมัน

ตัวอย่างของรหัสสาธารณะ RSA คือ:

AAAAB3NzaC1yc2EAAAABJQAAAQB/nAmOjTmezNUDKYvEeIRf2YnwM9/uUG1d0BYsc8/tRtx+RGi7N2lUbp728MXGwdnL9od4cItzky/zVdLZE2cycOa18xBK9cOWmcKS0A8FYBxEQWJ/q9YVUgZbFKfYGaGQxsER+A0w/fX8ALuk78ktP31K69LcQgxIsl7rNzxsoOQKJ/CIxOGMMxczYTiEoLvQhapFQMs3FL96didKr/QbrfB1WT6s3838SEaXfgZvLef1YB2xmfhbT9OXFE3FXvh2UPBfN+ffE7iiayQf/2XR+8j4N4bW30DiPtOQLGUrH1y5X/rpNZNlWW2+jGIxqZtgWg7lTy3mXy5x836Sj/6L

ฉันจะหาความยาวบิตของคีย์นี้ได้อย่างไร มี 368 ตัวอักษร ดังนั้น bitength? นั่นจะหมายความว่านี่คือระบบ 46 ไบต์ใช่ไหม ฉันแทบจะไม่เข้าใจความหมายเลย และฉันก็จมอยู่กับบทความใน Wikipedia, บทช่วยสอนบน YouTube และอีกมากมายเป็นเวลาหนึ่งหรือสองสัปดาห์ สิ่งเหล่านี้มักจะพูดราวกับว่าคุณเข้าใจความหมาย ดังนั้นฉันจึงไม่มีอะไรจะพูดมาก หากมีใครสามารถอธิบายตรรกะที่ฉันขาดหายไปได้ นั่นจะช่วยได้มาก

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

ในที่สุด ฉันมีรหัสสาธารณะอื่นที่ฉันต้องการคำนวณขนาด สมมติว่าฉันมีจำนวนเต็มสองชุด $S_1$ และ $S_2$. ขนาดของพวกเขาคือ 100 และ 150 ตามลำดับ ทั้งสองนี้สร้างรหัสสาธารณะของฉัน สิ่งนี้แตกต่างอย่างมากจากตัวอย่างด้านบน ดังนั้นฉันจะคำนวณขนาดบิตได้อย่างไร หรือฉันถามผิดที่นี่? ฉันต้องการทราบจริงๆ ว่าคีย์ดังกล่าวจะใช้พื้นที่เก็บข้อมูลบนคอมพิวเตอร์เท่าใด สมมติว่าฉันมี 100 ชุด แต่ละชุดมี 1,000 เทอม กุญแจสาธารณะ "ไฟล์" นั้นจะใหญ่แค่ไหน? แต่ฉันต้องการพยายาม "เข้าใจ" ว่าบิต / ไบต์หมายถึงอะไรในตอนแรก

คำชี้แจงใด ๆ ที่จะได้รับการชื่นชมอย่างมาก

Score:6
ธง gb

คำถามมากมายที่นี่ ฉันพยายามแยกย่อยง่ายๆ และตอบคำถามเริ่มต้นของคุณ

สิ่งที่คุณโพสต์คือ ฐาน 64 การเข้ารหัสคีย์สาธารณะ ssh-rsa ดังนั้นโดยพื้นฐานแล้วมนุษย์จึงไม่สามารถอ่านได้จริงๆ หากคุณถอดรหัสสตริงนี้ คุณสามารถดูสตริงนี้ได้ ฉันจะแสดงตัวอย่างหลายไบต์แรกให้คุณดู โดยพยายามอธิบายว่ามันหมายถึงอะไร:

00000000 00 00 00 07 73 73 68 2d 72 73 61 00 00 00 01 25 |....ssh-rsa....%|
00000010 00 00 01 00 7f 9c 09 8e 8d 39 9e cc d5 03 29 8b |.........9....).|
00000020 c4 78 84 5f d9 89 f0 33 df ee 50 6d 5d d0 16 2c |.x._...3..Pm]..,|
  • สี่ไบต์แรกคือ 0x00 0x00 0x00 0x07 ระบุว่าถัดไป ฟิลด์ที่คุณต้องอ่านมีความยาวเจ็ดไบต์
  • จากนั้นคุณจะมีเจ็ดไบต์ถัดไป: 0x73, 0x73, .... 0x61 ซึ่งแปลว่า "ssh-rsa"
  • สี่ไบต์ถัดไปคือ 0x00 0x00 0x00 0x01 แสดงว่าไบต์ถัดไปอธิบายเลขยกกำลังสาธารณะของคุณ
  • คุณก็จะได้ 0x25 ซึ่งเป็นเลขยกกำลังสาธารณะของคุณ
  • สี่ไบต์ถัดไปคือ 0x00 0x00 0x01 0x00 แสดงว่าโมดูลัสสาธารณะของคุณมีความยาว 0x0100 ไบต์ (ซึ่งแปลเป็น 256 ไบต์ - ซึ่งแปลเป็น 2048 บิต)
  • แล้วคุณมีโมดูลัสสาธารณะของคุณ

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

MeBadMaths avatar
in flag
ฉันคิดว่ารหัสสาธารณะ RSA ดูแปลกไปอย่างสิ้นเชิงสำหรับฉัน ขอขอบคุณสำหรับการล้างข้อมูลนั้นและสำหรับลิงก์ทั้งสอง อันแรกไม่ใช่อันที่ฉันเคยอ่าน ฉันจะลองดูตอนนี้ คุณได้ตอบคำถามเบื้องต้นของฉันสองสามข้อแล้ว ซึ่งฉันซาบซึ้งมาก คุณบอกว่านี่คือ 256 ไบต์ - หมายความว่าถ้าฉันเก็บพับลิกคีย์นั้นไว้ เช่น เอกสารเวิร์ด ขนาดไฟล์จะเป็น 256 ไบต์ใช่ไหม
Maarten Bodewes avatar
in flag
ไม่ "ขนาด" ของคีย์ RSA ถูกกำหนดโดยโมดูลัสขนาดบิตเพียงอย่างเดียว พับลิกคีย์สามารถเข้ารหัสได้หลายวิธี แต่โดยทั่วไปแล้ว เลขชี้กำลังสาธารณะจะถูกเก็บไว้ด้วย ดังนั้นในกรณีนี้ ขนาดจะใหญ่กว่า 256 ไบต์ กล่าวอีกนัยหนึ่ง: ขนาดคีย์ **เข้ารหัส** ขึ้นอยู่กับขนาดคีย์ ข้อมูลเมตาที่จัดเก็บด้วยคีย์ และประเภทของการเข้ารหัสที่ใช้
MeBadMaths avatar
in flag
เอาล่ะ ตัวอย่างที่ฉันให้เป็นคีย์เข้ารหัส? ดังนั้นมันจะใหญ่ขึ้นเพราะการเข้ารหัสจะเพิ่มข้อมูลพิเศษที่ต้องเก็บไว้? ฉันคิดว่ามันสมเหตุสมผล ขอบคุณ!
MeBadMaths avatar
in flag
ดังนั้น เพื่อหาขนาดไบต์ของคีย์สาธารณะ RSA ที่ฉันให้มา มันต้องมีรายละเอียดที่เข้ารหัสเช่นเดียวกับรายละเอียดจากกระบวนการเข้ารหัสเอง ดังนั้นจึงไม่สามารถถ่ายโอนไปยังกุญแจสาธารณะอื่นสำหรับระบบอื่นได้ ฉันคิดว่าการหาขนาดของพับลิกคีย์นั้นไม่เท่ากันสำหรับพับลิกคีย์ทั้งหมด ดังนั้น คำถามใหญ่ที่ฉันมีคือขนาดของรหัสสาธารณะที่สอดคล้องกับชุดในโพสต์ของฉันคือเท่าใด นั่นคือเป้าหมายหลักของฉัน และฉันก็ค่อนข้างไร้เดียงสานิดหน่อยว่ามันง่ายแค่ไหน ฮ่าๆ ขอบคุณสำหรับการตอบกลับจนถึงตอนนี้!
BlueRaja - Danny Pflughoeft avatar
@MeBadMaths: การเข้ารหัส base64 ยังขยายขนาดเล็กน้อย อักขระแต่ละตัวในสตริงที่คุณวางใช้เวลา 8 บิตในการจัดเก็บ _ (อาจมากกว่านั้น ขึ้นอยู่กับการเข้ารหัสของอักขระ!)_ แต่เป็นตัวแทนเพียงหนึ่งในค่า 64 = 2^6 = "6 บิตที่มีค่าของ" เหตุใดจึงต้องใช้ base64 ถ้ามันสิ้นเปลืองมาก เสร็จสิ้นเนื่องจากคีย์ดิบจะมีลักษณะเหมือนสัญลักษณ์ซึ่งพูดพล่อยๆ จำนวนมากในโปรแกรมแก้ไขข้อความ และจะคัดลอก+วางไม่ถูกต้อง ในขณะที่การแทนค่าเบส 64 สามารถทำได้
MeBadMaths avatar
in flag
@ BlueRaja-DannyPflughoeft นั่นทำให้สิ่งต่าง ๆ ชัดเจนยิ่งขึ้น ดังนั้นอักขระแต่ละตัวจึงสอดคล้องกับพื้นที่เก็บข้อมูล 6 บิต เนื่องจากเป็นเลขฐาน 64 มันถูกจัดเก็บเป็น 8 บิต เสียไป 2 บิต สมมติว่ากุญแจสาธารณะของฉันคือตัวเลขสองกลุ่ม $\{0,1,6,7\}$ และ $\{0,2,4\}$ เปลี่ยนเป็นเลขฐานสองแล้วเป็นฐาน 64 ฉันคิดว่าชุดเปลี่ยนเป็น AAEGBw= (อาจผิดกับการเติม) และ AAIE อักขระแต่ละตัวมีขนาด 8 บิต = 1 ไบต์ (เสีย 2 บิต) ดังนั้นขนาดรวมคือ 7 ไบต์และ 4 ไบต์ตามลำดับ นั่นถูกต้องใช่ไหม? ฉันอาจไม่ได้คำนึงถึงสัญลักษณ์ { } ดังนั้นจึงเป็นเพียงค่าตัวเลข

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา