Saya menyadari ini sudah tua, tetapi saya pikir saya akan menyumbangkan solusi saya. Ada 2 ^ 128 kemungkinan kombinasi hash. Dan dengan demikian kemungkinan 2 ^ 64 dari paradoks ulang tahun. Meskipun solusi di bawah ini tidak akan menghilangkan kemungkinan tabrakan, itu pasti akan mengurangi risiko dalam jumlah yang sangat besar.
2^64 = 18,446,744,073,709,500,000 possible combinations
Apa yang telah saya lakukan adalah saya menggabungkan beberapa hash berdasarkan string input untuk mendapatkan string yang lebih panjang yang Anda anggap hash ...
Jadi pseudo-code saya untuk ini adalah:
Result = Hash(string) & Hash(Reverse(string)) & Hash(Length(string))
Itu adalah ketidakmungkinan praktis tabrakan. Tetapi jika Anda ingin menjadi super paranoid dan tidak dapat mewujudkannya, dan ruang penyimpanan tidak menjadi masalah (juga bukan siklus komputasi) ...
Result = Hash(string) & Hash(Reverse(string)) & Hash(Length(string))
& Hash(Reverse(SpellOutLengthWithWords(Length(string))))
& Hash(Rotate13(string)) Hash(Hash(string)) & Hash(Reverse(Hash(string)))
Oke, bukan solusi terbersih, tapi ini sekarang membuat Anda lebih banyak bermain dengan seberapa jarang Anda akan mengalami tabrakan. Sampai-sampai saya mungkin menganggap tidak mungkin dalam semua pengertian realistis istilah tersebut.
Demi saya, saya pikir kemungkinan tabrakan cukup jarang sehingga saya akan menganggap ini bukan "pasti" tetapi sangat tidak mungkin terjadi sehingga sesuai dengan kebutuhan.
Sekarang kemungkinan kombinasi naik secara signifikan. Meskipun Anda bisa menghabiskan waktu lama untuk mengetahui berapa banyak kombinasi yang bisa Anda dapatkan, saya akan mengatakan secara teori itu membuat Anda SIGNIFIKAN lebih dari jumlah yang dikutip di atas
2^64 (or 18,446,744,073,709,551,616)
Mungkin sekitar seratus digit lagi. Maks teoritis yang bisa diberikan ini kepada Anda
Jumlah kemungkinan string yang dihasilkan:
528294531135665246352339784916516606518847326036121522127960709026673902556724859474417255887657187894674394993257128678882347559502685537250538978462939576908386683999005084168731517676426441053024232908211188404148028292751561738838396898767036476489538580897737998336