Score:3

เข้ารหัส/เข้ารหัส และ ถอดรหัส/ถอดรหัสสตริงที่มีความลับ

ธง cn

ในการพัฒนาแอป ฉันมีกรณีการใช้งานง่ายๆ ที่ฉันต้องการเข้ารหัส/เข้ารหัสสตริง (อาจเป็นสองสามไบต์ก็ได้ เพราะโดยพื้นฐานแล้วมันเป็นเพียงที่อยู่ IP) ในผลลัพธ์ฉันคิดว่าจะเป็นการดีที่สุดที่จะมี hex-string (คิดถึง md5-hash แบบเก่า) ไม่มีใครที่ไม่มีรหัสส่วนตัวไม่ควรสามารถถอดรหัส/ถอดรหัสที่อยู่ IP ได้

ขั้นตอนมีดังนี้: ฉันมีสตริง (ที่อยู่ IP จากเครือข่าย VPN) และเข้ารหัสด้วยรหัสส่วนตัว (ควรมีรหัสส่วนตัวเพียงรหัสเดียว ไม่มีรหัสสาธารณะหรืออะไรเลย) ผู้ใช้ได้รับสตริงที่เข้ารหัส ลงชื่อเข้าใช้แอปของฉัน และส่งกลับมาให้ฉัน เพื่อให้ฉันสามารถเชื่อมโยงผู้ใช้กับที่อยู่ IP ได้ ที่อยู่ IP ควรเป็นส่วนตัวและอยู่ในมือของฉันเท่านั้น

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

ขอแสดงความนับถือ

Maarten Bodewes avatar
in flag
ฟังดูเหมือนคุณต้องการใช้การเข้ารหัสแบบสมมาตร อาจใช้โหมดตรวจสอบความถูกต้อง เช่น AES-GCM อย่างไรก็ตาม ดูเหมือนว่าคุณต้องการให้คีย์ของคุณปรากฏระหว่างการเข้ารหัสและถอดรหัส ซึ่งโดยทั่วไปเราเรียกว่าคีย์ **ลับ** ไม่ใช่คีย์ **ส่วนตัว** เพราะคุณต้องการคีย์ส่วนตัวที่ตำแหน่งเดียวเท่านั้น .
Maarten Bodewes avatar
in flag
โปรดทราบว่าผลลัพธ์ของการเข้ารหัสสมัยใหม่ประกอบด้วยไบนารี ซึ่งโดยปกติจะเป็นไบต์ ไบต์เหล่านั้นสามารถแสดงหรือเข้ารหัสเป็นข้อความโดยใช้ - ตัวอย่างเช่น - เลขฐานสิบหกหรือ base64url อย่างไรก็ตาม การเข้ารหัส/ถอดรหัสไม่ถือว่าเป็นส่วนหนึ่งของอัลกอริธึมการเข้ารหัส (แม้ว่าแน่นอนว่าอาจเป็นส่วนหนึ่งของโปรโตคอลที่เกี่ยวข้องกับการเข้ารหัสก็ตาม) ตัวอย่างเช่น ผลลัพธ์ของอัลกอริทึม MD5 ที่ล้าสมัยคือ 128 บิต / 16 ไบต์ แต่ผลลัพธ์ของเครื่องมือบรรทัดคำสั่ง `md5sum` ประกอบด้วยเลขฐานสิบหกและการบ่งชี้ไฟล์
poncho avatar
my flag
ผู้ใช้ป้อนสตริงด้วยตนเองหรือไม่ ถ้าเป็นเช่นนั้น สิ่งสำคัญคือต้องทำให้สั้น ในทางกลับกัน หากที่อยู่ IP ที่เรากำลังพูดถึงคือที่อยู่ IPv6 นั่นคือ 128 บิตแล้ว ดังนั้นการทำให้สตริง 'สั้น' อาจไม่สามารถทำได้ด้วยวิธีนี้ - แนวทางอื่นอาจเป็นแนวทาง 'tinyURL' - ให้เซิร์ฟเวอร์เก็บฐานข้อมูลของ 'แท็ก' และ 'ที่อยู่ IP' และแจกแท็กให้กับผู้ใช้
fonzane avatar
cn flag
ผู้ใช้ไม่ได้ป้อนสตริงด้วยตนเอง ฉันกำลังเข้ารหัสใน QR-Code ทางออกของฉันตอนนี้คือการใช้โมดูล crypto ในตัวของ nodejs createCipheriv ด้วยอัลกอริทึม aes256 สิ่งเดียวที่ฉันสงสัยเกี่ยวกับวิธีนี้ในตอนนี้คือสตริงเอาต์พุตยาวมาก ฉันอาจไม่ต้องการใส่ลงใน URL...
Maarten Bodewes avatar
in flag
ขออภัย การให้คำตอบที่ดีอาจรวมถึงการวิเคราะห์สถานการณ์ของคุณอย่างครบถ้วน อย่างไรก็ตาม ฉันสามารถบอกได้ว่า `createCipheriv` ใช้ CBC เท่านั้น ซึ่งไม่มีประสิทธิภาพเนื่องจากการเติม นอกจากนี้ คุณควรดูวิธีเข้ารหัสข้อความธรรมดาในจำนวนไบต์ขั้นต่ำ เช่น. ที่อยู่ IPv4 สามารถใช้เพียง 4 ไบต์ (และแม้แต่น้อยกว่านี้หากอยู่ใน LAN 10.x.x.x เสมอ เนื่องจากคุณสามารถละทิ้ง 10 ได้)

โพสต์คำตอบ

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