Score:0

การเข้ารหัสโดยใช้ ASCII แทนบิตและไบต์ (ชี้แจงในเนื้อหา)

ธง th

ฉันยังใหม่กับการเข้ารหัสและฉันกำลังพยายามทำความเข้าใจบางอย่าง ฉันค้นหาในอินเทอร์เน็ต แม้ว่าคำถามอาจเป็นคำถามง่ายๆ แต่ก็ไม่พบคำตอบ ดังนั้น โปรดอย่าตัดสินฉันด้วยสิ่งนั้น นี่คือคำถามของฉัน: โดยไม่คำนึงถึงประสิทธิภาพ ความเร็ว หรือการเพิ่มประสิทธิภาพ:

ทุกสิ่งที่สามารถเข้ารหัสด้วยวิธีการเข้ารหัสอื่น (เช่น การใช้ไบนารีหรือบิตและไบต์หรือ Unicode) สามารถเข้ารหัสโดยใช้ ASCII ได้หรือไม่

ขอขอบคุณล่วงหน้าสำหรับผู้ที่กรุณาตอบคำถามของฉัน

fgrieu avatar
ng flag
กรุณาชี้แจงหรือปิดคำถาม! ย่อหน้าที่สองมีข้อผิดพลาดทางไวยากรณ์ ("สามารถทุกอย่างที่..คือ"); มี "วิธีการเข้ารหัสอื่น" โดยไม่อ้างอิงถึงการเข้ารหัสอื่น และใช้ "เข้ารหัสโดยใช้ ASCII" เมื่อการเข้ารหัสไม่ดำเนินการใดๆ บางทีเราควรอ่าน: "ทุกอย่าง (ที่สามารถเข้ารหัสได้) หรือเข้ารหัสได้ _into_ ASCII" คำตอบคือใช่อย่างชัดเจน และเป็นเรื่องปกติทั่วไป หนึ่งในที่รู้จักกันดีคือการเข้ารหัสข้อความรหัสใหม่ที่สร้างโดยวิธีการเข้ารหัสสาธารณะลงใน ASCII เช่น การใช้ [Base64](https://en.wikipedia. org/wiki/Base64)
Fenrir avatar
th flag
สวัสดี ฉันซาบซึ้งมากกับคำตอบของคุณ ขอโทษที่ฉันไม่สามารถแสดงออกได้ชัดเจน ฉันพยายามถาม ""ทุกสิ่ง (ที่สามารถเข้ารหัสได้) สามารถเข้ารหัสเป็น ASCII ได้หรือไม่" และคุณได้ตอบไปแล้ว นอกจากนี้ ขอขอบคุณที่เตือนฉันก่อนแทนที่จะรายงานโดยตรง
Score:0
ธง si

ASCII คือการเข้ารหัส ไม่ใช่วิธีการเข้ารหัส ASCII เปลี่ยนอักขระบางตัว (ตัวอักษรภาษาอังกฤษ สัญลักษณ์บางตัว และอักขระควบคุมบางตัวที่ไม่สามารถพิมพ์ได้ เช่น "tab" หรือ "line feed") เป็นค่าไบนารี 7 บิต โดยปกติจะทำการเข้ารหัสอักขระ ASCII แต่ละตัวเป็นหนึ่งไบต์ขนาด 8 บิต และตั้งค่าบิตที่สำคัญที่สุดของไบต์นั้นเป็น 0

ระบบคอมพิวเตอร์โบราณบางระบบ (ส่วนใหญ่พบเฉพาะในพิพิธภัณฑ์หรือในคอลเล็กชันของผู้ที่ชื่นชอบการคำนวณย้อนยุค) ไม่รองรับ ASCII หรือ 8 บิตไบต์ และแทนที่จะเข้ารหัสข้อมูลด้วยวิธีอื่น เช่น เมนเฟรม IBM 1401 จากข้อมูลเข้ารหัสปี 1959 โดยใช้ อักขระ 6 บิต ในโครงร่างทศนิยมรหัสไบนารีพิเศษ นี่เป็นเพียงความสนใจทางประวัติศาสตร์เท่านั้น

ระบบคอมพิวเตอร์สมัยใหม่ส่วนใหญ่ไม่ใช้ ASCII แต่ใช้ Unicode แทน ซึ่งมักจะเป็นการเข้ารหัสแบบ UTF-8 นอกจากนี้ยังใช้ไบต์ 8 บิต แต่บิตที่สำคัญที่สุดไม่จำเป็นต้องเป็น 0

วิธีการเข้ารหัสใดๆ ที่ทำงานบนไบต์สามารถทำงานกับข้อมูล ASCII ได้ เนื่องจากข้อมูล ASCII ประกอบด้วยไบต์

วิธีการเข้ารหัสใดๆ ที่ทำงานเฉพาะกับชุดย่อยของไบต์ที่อนุญาตโดย ASCII สามารถทำงานบนไบต์ที่กำหนดเองได้ โดยก่อนอื่นให้เข้ารหัสไบต์ที่กำหนดเองเหล่านั้นด้วยโครงร่างที่แมปไบต์กับชุดย่อยของ ASCII ของไบต์ เช่น Base64

ดังนั้น สิ่งใดก็ตามที่สามารถเข้ารหัสด้วยวิธีการเข้ารหัสอื่น (สมัยใหม่และปลอดภัย) ก็สามารถเข้ารหัสด้วยวิธีที่ยอมรับเฉพาะอักขระ ASCII เท่านั้น

Score:0
ธง my

เมื่อสตริงเช่น "Hello World" ถูกเข้ารหัส อัลกอริทึมจะแปลงสตริงนี้เป็นไบนารีหรือ ASCII หรือไม่

คำตอบนั้นขึ้นอยู่กับว่าคุณกำลังพูดถึงการเข้ารหัสในอดีตหรือสมัยใหม่

ในอดีต วิธีการเข้ารหัสมักจะใช้สตริงเป็นชุดอักขระ และแปลงด้วยวิธีนั้น บางครั้งพวกเขาทำแผนที่ภายใน เช่น "A" -> 0, "B" -> 1 เป็นต้น อย่างไรก็ตาม โดยทั่วไปแล้วจะทำภายในอัลกอริทึม โดยทั่วไปแล้วพวกเขาจะไม่แปลงอักขระเป็นเลขฐานสอง (ซึ่งในตอนนั้นจะถูกมองว่าเป็นตัวเลือกที่แปลก) และแน่นอนว่าไม่ใช่ ASCII (ซึ่งในตอนนั้นไม่มีอยู่จริง)

ในทางกลับกัน อัลกอริธึมการเข้ารหัสสมัยใหม่โดยทั่วไป [1] ใช้สตริงของบิตหรือไบต์เป็นอินพุต และสร้างสตริงของบิตหรือไบต์เป็นเอาต์พุต ในการเข้ารหัสสตริง คุณจะต้องแปลงเป็นสตริงดังกล่าว (ไม่ว่าจะใช้ ASCII, Unicode หรือ EBCDIC อัลกอริทึมจะไม่สนใจ) และอัลกอริทึมก็ทำงานในสิ่งนั้น

นอกจากนี้ หากเป็นไฟล์ จะสามารถใช้ ASCII เพื่อเข้ารหัสข้อมูลได้หรือไม่

ไฟล์ของอักขระ ASCII สามารถดูเป็นสตริงของไบต์ได้ ดังนั้นอัลกอริทึมการเข้ารหัสสมัยใหม่จึงจัดการได้ดี

[1]: ข้อยกเว้นประการหนึ่ง: รูปแบบการรักษารูปแบบการเข้ารหัส ซึ่งโดยทั่วไปจะมองว่าอินพุตเป็นฐาน-$ข$ สตริงที่ไหน $ข$ อาจไม่ใช่ยกกำลังสอง

Fenrir avatar
th flag
ฉันขอบคุณมากที่กรุณาตอบคำถามของฉัน แต่ฉันมีคำถามอีกหนึ่งข้อที่จะถาม ถ้าเราสามารถแปลงบางสิ่งเป็นสตริงไบต์ได้ เราก็สามารถแปลงเป็น ASCII ได้เช่นกัน จริงไหม? ดังนั้น ทุกสิ่งที่สามารถเข้ารหัสด้วยวิธีอื่นก็สามารถเข้ารหัสได้โดยใช้ ASCII ใช่ไหม แม้ว่าในกรณีนี้ คุณควรคำนึงถึงประสิทธิภาพและการเพิ่มประสิทธิภาพ
poncho avatar
my flag
ASCII เป็นเพียงวิธีการแปลงอักขระต่างๆ (และตัวควบคุม) เป็นค่าระหว่าง 0 ถึง 127 (หรือ 0 ถึง 255 หากคุณใช้ "ASCII แบบขยาย") หากเราคิดว่าสตริงที่เราให้ crypto คือ "ASCII แบบขยาย" อืม ใช่ (สมมติว่าสตริงมีความยาวหลายบิตคูณด้วย 8 บิต ซึ่งโดยปกติจะเป็น); แต่ก็ไม่ชัดเจนว่าจะให้ประโยชน์อะไรแก่เราบ้าง
Score:0
ธง ng

ทุกอย่าง (ที่สามารถเข้ารหัสได้) สามารถเข้ารหัสเป็น ASCII ได้หรือไม่

ใช่. และเป็นเรื่องธรรมดา เทคนิคทั่วไปคือการเข้ารหัส ซึ่งสำหรับการเข้ารหัสสมัยใหม่ส่วนใหญ่จะแสดงผลออกมาเป็นบิตแบบสุ่ม ซึ่งอาจเรียกว่า "ไบนารี่" จากนั้นเข้ารหัสอีกครั้งเป็น ASCII เช่น โดยใช้ ฐาน 64. ซึ่งสร้างขึ้นในซอฟต์แวร์เข้ารหัสบางตัว เช่น PGP/GPG ซึ่งเรียกการรีเอ็นโด ชุดเกราะ ASCII.

เช่น การเข้ารหัสไบนารีเป็นข้อความ ไม่เฉพาะเจาะจงสำหรับการเข้ารหัส ใช้ในอีเมลสำหรับเนื้อหาโดยใช้อักขระที่ไม่มีอยู่ใน ASCII และไฟล์แนบ เช่น รูปภาพ

การเข้ารหัสดังกล่าวจะเพิ่มขนาด โดยปัจจัยของ $2$ สำหรับเลขฐานสิบหก (ซึ่งเข้ารหัส 4 บิตเป็น 1 อักขระแล้วแสดงเป็น 8 บิต) $4/3\ประมาณ1.33$ สำหรับ Base64 (ซึ่งเข้ารหัส 24 บิตเป็น 4 อักขระแล้วแสดงเป็น 32 บิต) ด้วยเหตุผลนี้ และเนื่องจากการเปลี่ยนแปลงรูปแบบใด ๆ มีค่าใช้จ่ายในการคำนวณที่ไม่สำคัญ โดยทั่วไปจะไม่ใช้สำหรับเพย์โหลดขนาดใหญ่ เช่น วิดีโอ

โพสต์คำตอบ

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