using System.Collections;
public static uint DJBHash(string str)
for (i = 0; i < str.Length; i++)
hash = ((hash << 5) + hash) + ((byte)str[(int)i]);
public static void Main()
Hashtable hashtable = new Hashtable();
Console.WriteLine("Сейчас мы добавим запись в хеш таблицу");
Console.WriteLine("Введите значение ключа:");
string new_value = Console.ReadLine();
uint new_key = DJBHash(new_value);
hashtable[new_key] = new_value;
ICollection keys = hashtable.Keys;
Console.WriteLine("Отлично, хеш сформирован, выводим его:");
foreach (DictionaryEntry outp in hashtable)
Console.WriteLine("{0} : {1}", outp.Key, outp.Value);
Console.WriteLine("А теперь получим ключ определенного значения");
Console.WriteLine("Введите значение:");
uint see_key = DJBHash(Console.ReadLine());
if(hashtable.ContainsKey(see_key)){
Console.WriteLine("Ключ зашифрованного значения {1} = {0}", see_key, hashtable[see_key]);
Console.WriteLine("Отлично, теперь удалим элемент таблицы хеша");
Console.WriteLine("Введите значение для его удаления:");
uint del_key = DJBHash(Console.ReadLine());
if(hashtable.ContainsKey(del_key)){
hashtable.Remove(del_key);
Console.WriteLine("Удаление ключа {0} успешно произведено, выведем то, что осталось в таблице:", del_key);
foreach (DictionaryEntry outp in hashtable)
Console.WriteLine("{0} : {1}", outp.Key, outp.Value);
Console.WriteLine("Такого ключа, к сожалению, нет :( Начните заного");
Console.WriteLine("Такого ключа, к сожалению, нет :( Начните заного");