Bunu çözmek için, her satır için benzersiz bir değer (hash) döndüren bir hash işlevi kullanmak uygundur.
C++11'de hash almak için yerleşik bir tesis vardır: hash.  < br /> Gelecekte, hash sayısını saymak için C++ 11'de de görünen unordered_map hash tablosunu kullanmak daha iyidir. Dinamik veri yapıları -> İlişkili diziler: harita.

"test" dizesinden hash alma örneği:

hash<string> hash_fn;
size_t str_hash = hash_fn("test" );
cout<<str_hash;


Sonuç şöyle olacaktır: "2949673445", böylece her benzersiz dizeden  unordered_map'te anahtar olarak kullanılabilecek benzersiz bir hash elde edebilirsiniz.

Bir dizgeyi karma hale getirmek, bir dizgenin her bir dizi için benzersiz (çarpışma olasılığının önemsiz olduğunu varsayacağız) bir sayı olarak temsilidir. Bu, herhangi bir önemli veriyi (şifreler gibi) veritabanında dizeler olarak değil, sayılar olarak saklamanıza olanak tanır. Bu, bir saldırgan parola veritabanına erişim kazanırsa parolaları korumanıza olanak tanır, çünkü parolaların kendisini değil, yalnızca sayısal gösterimini alacaktır ve bir diziyi karma değeriyle elde etmek neredeyse imkansızdır (özellikle karma algoritmasını bilmeden) ). 
Polinom hash'leri en çok yarışma problemlerini programlamada kullanılır.
S dizisinin hash fonksiyonunu belirlemenin en iyi yollarından biri şu şekildedir:
h(S)  =  S[0]  +  S[1] * P  +  S[2] * P^2  +  S[3] * P^3  +  ...  +  S[N] * P^N