Может кто-нибудь сказать мне принцип работы или алгоритм алгоритма хеширования строки RS?Мне это нужно, но не могу найти в Google.Пожалуйста, помогите мне, по крайней мере, с алгоритмом, я бы реализовал его самостоятельно.
Вы имеете в виду Роберт Седжвик алгоритм хеширования строк?
uint a = 63689, uint b = 378551 foreach ( byte x ; bytes ) { value = value * a + x; a *= b; } return value;
(цитата из http://pallas.telperion.info/d/hash/).
C ++ Реализация выглядит следующим образом:
unsigned int RSHash(const std::string& str) { unsigned int b = 378551; unsigned int a = 63689; unsigned int hash = 0; for(std::size_t i = 0; i < str.length(); i++) { hash = hash * a + str[i]; a = a * b; } return hash; } /* End Of RS Hash Function */
Реализация Python выглядит следующим образом:
def RSHash(key): a = 63689 b = 378551 hash = 0 for i in range(len(key)): hash = hash * a + ord(key[i]) a = a * b return hash