การตั้งค่า
ฉันมีตารางค่าที่ต้องคำนวณ a แฮชเค็ม สำหรับแต่ละโต๊ะ -เซลล์ ค่า. นอกจากนี้ ฉันต้องการเกลือสำหรับแต่ละเซลล์ของตาราง มีเอกลักษณ์ และ คาดการณ์ไม่ได้. (ฉันสามารถอธิบายได้ว่าอะไรกระตุ้นความต้องการนี้ในภายหลัง แต่ตอนนี้ฉันไม่ต้องการหันเหความสนใจจากข้อความระบุปัญหา)
ตอนนี้ฉันไม่ต้องการเพิ่มคอลัมน์พิเศษต่อคอลัมน์ที่มีอยู่ในตารางเพียงเพื่อเก็บเกลือต่อเซลล์ที่ไม่ซ้ำกันนี้ ดังนั้นกลยุทธ์ง่ายๆ ที่ฉันมีอยู่ในใจคือการสร้างลำดับลับ 32 ไบต์แบบสุ่มที่ปลอดภัยสำหรับทั้งตารางก่อน เรียกมันว่า R_32จากนั้นสำหรับเซลล์ใดก็ตามให้คำนวณเกลือเป็น SHA-256 ของ R_32 เชื่อมกับพิกัดแถว/คอลัมน์ของเซลล์ ในรหัสเทียมมีลักษณะเช่นนี้
tableSalt(แถว, col) = SHA_256( R_32 + แถว + col )
ที่ไหน +
ที่นี่หมายถึงการต่อข้อมูลแบบไบต์สตริง ไม่ใช่การบวก (พิกัดแถว/คอลัมน์จะแสดงเป็นค่า 8 ไบต์แต่ละตัว)
คำถาม
ในแอปพลิเคชันของฉัน สิ่งสำคัญคือต้องแฮชเมล็ดลับ R_32 ข้างต้นไม่สามารถทำวิศวกรรมย้อนกลับได้ ไม่ว่าจะทราบจำนวนเกลือของเซลล์ที่แตกต่างกันจากตารางเดียวกัน คือ เกลือแกง
ขั้นตอนข้างต้นปลอดภัยในส่วนนี้หรือไม่