Bunun eski olduğunun farkındayım ama çözümüme katkıda bulunacağımı düşündüm. 2 ^ 128 olası hash kombinasyonu vardır. Ve böylece bir doğum günü paradoksunun 2 ^ 64 olasılığı. Aşağıdaki çözüm, çarpışma olasılığını ortadan kaldırmayacak olsa da, kesinlikle riski çok önemli bir miktarda azaltacaktır.
2^64 = 18,446,744,073,709,500,000 possible combinations
Yaptığım şey, hash'iniz olduğunu düşündüğünüz çok daha uzun bir sonuç dizisi elde etmek için giriş dizesine göre birkaç karma bir araya getirmekti ...
Yani bunun için sözde kodum:
Result = Hash(string) & Hash(Reverse(string)) & Hash(Length(string))
Bu, bir çarpışmanın pratik olasılıksızlığıdır. Ancak süper paranoyak olmak istiyorsanız ve bunun gerçekleşmesini sağlayamıyorsanız ve depolama alanı sorun değil (bilgi işlem döngüleri de değil) ...
Result = Hash(string) & Hash(Reverse(string)) & Hash(Length(string))
& Hash(Reverse(SpellOutLengthWithWords(Length(string))))
& Hash(Rotate13(string)) Hash(Hash(string)) & Hash(Reverse(Hash(string)))
Tamam, en temiz çözüm değil, ama bu şimdi size ne kadar seyrek bir şekilde çarpışmaya gireceğiniz konusunda çok daha fazla oyun sağlıyor. Bu noktaya kadar, terimin tüm gerçekçi anlamlarında imkansız olduğunu varsayabilirim.
Benim iyiliğim için, bir çarpışma olasılığının yeterince seyrek olduğunu düşünüyorum, bunu "kesin ateş" olarak değil, ihtiyaca uygun olacak kadar olası olmadığını düşüneceğim.
Şimdi olası kombinasyonlar önemli ölçüde artar. Bunun size kaç tane kombinasyon getirebileceğine uzun zaman harcayabilseniz de, teoride söyleyeceğim, size yukarıda belirtilen sayıdan ÖNEMLİ BİR ŞEKİLDE daha fazlasını getirir
2^64 (or 18,446,744,073,709,551,616)
Muhtemelen yüz basamak daha fazla. Bunun size verebileceği teorik maksimum değer
Ortaya çıkan dizelerin olası sayısı:
528294531135665246352339784916516606518847326036121522127960709026673902556724859474417255887657187894674394993257128678882347559502685537250538978462939576908386683999005084168731517676426441053024232908211188404148028292751561738838396898767036476489538580897737998336