On Tue, 8 Nov 2022 at 20:45, Pavel Sanda <[email protected]> wrote: > On Tue, Nov 08, 2022 at 04:43:15PM +0100, Jean-Marc Lasgouttes wrote: > > * I could do fancy things, but I'd rather avoid to import a whole library > > for this. >
Probably, the less fancy option is to use std::hash, available since C++11. I have no idea about the quality of the produced hashes, and it seems it might really depend on the compiler too. I can totally understand the need for very unique hashes in this case (unlike hash tables). If you want something with unicity guarantees, the only meaningful choice is cryptographic hashes: other functions do not have the right properties (easy to compute, but no real guarantee with small hashes). Something like BLAKE2/3 should be good, performance-wise, and it's available in Qt since Qt 6 ( https://doc.qt.io/qt-6/qcryptographichash.html#Algorithm-enum); otherwise, Keccak since 5.9; or SHA-3 before. Otherwise, you might consider using several hashes (concatenating them): I think it should provide enough entropy to have a very low probability of collision, but the hash algorithms must be really different for this to be worthwhile. (Just starting with std::hash and the string length, then see if more is required?)
-- lyx-devel mailing list [email protected] http://lists.lyx.org/mailman/listinfo/lyx-devel
