Score:2

จะมีฟังก์ชันแฮชที่แมปสตริงไบนารีขนาด n กับสตริงไบนารีขนาด n ได้อย่างไร

ธง mq

ฉันกำลังใช้การเข้ารหัสแบบไร้ใบรับรองจาก งานวิจัยฉบับนี้ ในภาษาไพธอน โดยพื้นฐานแล้วฉันต้องการให้มีการแมปฟังก์ชันแฮชต่อไปนี้ ฟังก์ชันแฮชนี้ถูกกล่าวถึงในอัลกอริทึมการตั้งค่าในหัวข้อ 2.4 ของบทความ โดยที่ n คือความยาวบิตของข้อความธรรมดา $$\begin{จัด} H_4: \{0, 1\}^n\ถึง\{0, 1\}^n\ \end{align}$$ มีฟังก์ชันแฮชในตัวในไลบรารี hashlib python หรือไม่ หรือฉันจะสร้างฟังก์ชันแฮชนี้ในไพ ธ อนได้อย่างไร

Maarten Bodewes avatar
in flag
คำถามนี้ประกอบด้วยสองส่วนที่แยกจากกัน: ฉันสามารถใช้อัลกอริทึมแฮช (ประเภท) ใดได้บ้าง และอัลกอริทึมใดที่มีอยู่ในไลบรารี hashlib python ดูเหมือนว่าจะเน้นไปที่อันหลัง และนั่นก็อยู่นอกหัวข้อของไซต์นี้ พูดตามตรง
Maarten Bodewes avatar
in flag
มีการระบุ [ที่นี่](https://docs.python.org/3.9/library/hashlib.html#shake-variable-length-digests) - มีตั้งแต่ 3.6 ซึ่งเป็นเวอร์ชัน lib ที่เก่าแก่ที่สุดที่ยังรองรับ API นั้นเรียบง่ายจนแทบไม่ต้องทำอะไรมากมาย อาจต้องทำงานเพิ่ม *บิต* หาก *n* ของคุณไม่ใช่ผลคูณของ 8 แต่ก็แค่นั้น ลองใช้และถาม [ดังนั้น] เมื่อติดขัด
Maarten Bodewes avatar
in flag
ฉันไม่ตอบเพราะมันน่าจะเหมาะกับ SO ค่อนข้างดีกว่า แต่จริง ๆ แล้วไม่สามารถแปลงสูตรนั้นเป็นรูปภาพได้ ashizz โปรดตอบสนองต่อคำตอบที่คุณได้รับที่นี่และที่ [ดังนั้น]
Score:1
ธง in

อัลกอริทึมที่ดีที่สุดที่จะใช้น่าจะเป็น SHAKE ที่กำหนดไว้สำหรับ Keccak ซึ่งเป็นผู้ชนะการแข่งขัน SHA-3 คุณสามารถใช้ SHAKE128 หรือ SHAKE256 ขึ้นอยู่กับความปลอดภัยและความสมดุลของประสิทธิภาพที่คุณต้องการบรรลุ

สำหรับ Python มีการระบุอัลกอริทึม ที่นี่ และควรพร้อมใช้งานตั้งแต่ 3.6 นั่นคือเวอร์ชันที่รองรับทั้งหมด คุณสามารถสร้างอัลกอริทึมแฮช (หรือมากกว่า XOF) โทร อัปเดต จำนวนครั้งที่คุณต้องการบนอินพุตไบนารีแล้วดึงผลลัพธ์โดยใช้ ไดเจสต์(digestSize) โทรที่ไหน ย่อยขนาด มีหน่วยเป็นไบต์


หากคุณต้องการ $n$ ที่ไม่ใช่ผลคูณของ 8 (เช่น อินพุต / เอาท์พุตไม่ได้เรียงเป็นไบต์) คุณอาจต้องใช้เทคนิคบางอย่าง เช่น นำหน้าศูนย์เป็นอินพุตและลบบิตซ้ายสุดออกจากเอาต์พุตในภายหลัง แน่นอนว่าสันนิษฐานว่า $n$ ไม่แตกต่างกัน หรือคุณอาจได้รับการชนกันของข้อความเข้า โปรโตคอลที่ใช้งานได้จริงส่วนใหญ่ได้รับการออกแบบด้วยพารามิเตอร์อินพุต/เอาต์พุตที่จัดตำแหน่งเป็นไบต์

โพสต์คำตอบ

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