Pregatirea
Am un tabel de valori pentru care trebuie să calculez a hash sarat pentru fiecare masă -celulă valoare. În plus, am nevoie de sare pentru fiecare celulă de masă unic și imprevizibile. (Pot explica mai târziu ce motivează această nevoie, dar deocamdată nu vreau să distrag atenția de la enunțul problemei.)
Acum nu vreau să adaug o coloană suplimentară pe coloană existentă într-un tabel doar pentru a stoca această sare unică, per celulă. Așadar, o strategie simplă pe care o am în minte este să generez mai întâi o secvență aleatorie secretă și sigură de 32 de octeți pentru întregul tabel, numiți-o R_32, iar apoi pentru orice celulă dată calculează-i sarea ca SHA-256 al R_32 concatenat cu coordonatele rândului/coloanei celulei. În pseudocod, așa arată
tableSalt(rând, col) = SHA_256( R_32 + rând + col )
Unde +
aici înseamnă concatenare șir de octeți, nu adăugare. (Coordonatele rândului/coloanelor sunt reprezentate ca valori de 8 octeți fiecare.)
Întrebare
În aplicația mea, este esențial ca hashul secret de semințe R_32 de mai sus să nu fie reverse-inginerie, indiferent câte săruri celulare diferite din același tabel sunt cunoscute. Este sare de masă
procedura de mai sus sigură în acest sens?