Knowledge

MurmurHash

Source 📝

122:
The current version is MurmurHash3, which yields a 32-bit or 128-bit hash value. When using 128-bits, the x86 and x64 versions do not produce the same values, as the algorithms are optimized for their respective platforms. MurmurHash3 was released alongside SMHasher, a hash function test suite.
43:
along with its test suite named SMHasher. It also exists in a number of variants, all of which have been released into the public domain. The name comes from two basic operations, multiply (MU) and rotate (R), used in its inner loop.
68:. Although successful, it had not been tested thoroughly and was not capable of providing 64-bit hashes as in Lookup3. Its design would be later built upon in MurmurHash2, combining a multiplicative hash (similar to the 397:
remainingBytes ← remainingBytes × c1 remainingBytes ← remainingBytes ROL r1 remainingBytes ← remainingBytes × c2 hash ← hash XOR remainingBytes hash ← hash XOR
401:
hash ← hash XOR (hash >> 16) hash ← hash × 0x85ebca6b hash ← hash XOR (hash >> 13) hash ← hash × 0xc2b2ae35 hash ← hash XOR (hash >> 16)
2242: 367:
k ← fourByteChunk k ← k × c1 k ← k ROL r1 k ← k × c2 hash ← hash XOR k hash ← hash ROL r2 hash ← (hash × m) + n
1216: 2208: 283: 84:
MurmurHash2 yields a 32- or 64-bit value. It comes in multiple variants, including some that allow incremental hashing and aligned or neutral versions.
110:
MurmurHash64B (64-bit, x86)—A 64-bit version optimized for 32-bit platforms. It is not a true 64-bit hash due to insufficient mixing of the stripes.
1302: 1435: 2305: 114:
The person who originally found the flaw in MurmurHash2 created an unofficial 160-bit version of MurmurHash2 called MurmurHash2_160.
2174: 1843: 51:, it is not specifically designed to be difficult to reverse by an adversary, making it unsuitable for cryptographic purposes. 1824: 310:, they were able to generate inputs that would lead to a hash collision. The authors of the attack recommend using their own 2222: 298:, where a user can choose input data in such a way so as to intentionally cause hash collisions. Jean-Philippe Aumasson and 2070: 69: 1220: 39:
suitable for general hash-based lookup. It was created by Austin Appleby in 2008 and, as of 8 January 2016, is hosted on
2274: 2018: 92: 1802: 1194: 1584: 1508: 36: 1856: 180: 148: 302:
were able to show that even implementations of MurmurHash using a randomized seed are vulnerable to so-called
212: 200: 136: 2188: 204: 192: 196: 168: 164: 48: 1484: 1388: 1241: 307: 184: 144: 88:
MurmurHash2 (32-bit, x86)—The original version; contains a flaw that weakens collision in some cases.
65: 353:
c1 ← 0xcc9e2d51 c2 ← 0x1b873593 r1 ← 15 r2 ← 13 m ← 5 n ← 0xe6546b64 hash ←
239: 152: 140: 17: 1780: 2157:"Introduction to Apache Cassandra™ + What's New in 4.0 by Patrick McFadin. DataStax Presents" 1983: 1462: 104:
MurmurHashAligned2 (32-bit, x86)—Slower, but does aligned reads (safer on some platforms).
8: 2090: 1339: 299: 107:
MurmurHash64A (64-bit, x64)—The original 64-bit version. Optimized for 64-bit arithmetic.
1254: 386:// in the subsequent multiplication. Consider that locating the meaningful digits 383:// so that these digits have the greatest potential to affect the low range digits 380:// The purpose is to place the meaningful digits towards the low end of the value, 1408: 1937: 1737: 1606: 392:// multiplication, and notably, that such high digits are likely to be discarded 1296: 389:// in the high range would produce a greater effect upon the high digits of the 330:// Note: In this version, all arithmetic is performed with unsigned 32-bit integers. 1904: 1361: 295: 259: 2134: 1758: 64:
The original MurmurHash was created as an attempt to make a faster function than
1631: 247: 156: 2156: 1701: 135:, but there are efficient ports for a variety of popular languages, including 2299: 1723: 1280: 271: 267: 208: 2112: 2045: 1654: 1925: 279: 275: 101:
MurmurHashNeutral2 (32-bit, x86)—Slower, but endian- and alignment-neutral.
859:// places the low bytes in the low places according to whatever endianness 1278: 263: 227: 176: 1878: 1522: 226:
It has been adopted into a number of open-source projects, most notably
2290: 1563: 1317: 216: 1676: 395:// by the modulo arithmetic under overflow. We don't want that. 243: 1543: 856:// A swap is *not* necessary here because the preceding loop already 235: 73: 377:// Note: Endian swapping is only necessary on big-endian machines. 98:
CMurmurHash2A (32-bit, x86)—MurmurHash2A, but works incrementally.
2262: 1960: 862:// we use. Swaps only apply when the memory is copied in a chunk. 375:
remainingBytes ← SwapToLittleEndian(remainingBytesInKey)
311: 303: 251: 188: 1926:
GitHub - Xor-el/HashLib4Pascal: Hashing for Modern Object Pascal
2247: 2227: 2193: 2075: 2023: 1829: 1568: 1548: 1489: 1440: 1413: 1393: 1366: 333:// In the case of overflow, the result is reduced modulo 255: 40: 1997: 628:// Here is a source of differing results across endiannesses. 231: 220: 132: 404:
A sample C implementation follows (for little-endian CPUs):
160: 1509:"MurMurHash3, an ultra fast hash algorithm for C# / .NET" 172: 631:// A swap here has no effects on hash properties though. 91:MurmurHash2A (32-bit, x86)—A fixed variant using 2297: 1607:"std.digest.murmurhash - D Programming Language" 1219:. Hbase.apache.org. 24 July 2011. Archived from 1803:"Murmur3.java in Clojure source code on Github" 1279:Tanjent (tanjent) wrote,3 March 2008 13:31:00. 2209:"Elasticsearch 2.0 - CRUD and routing changes" 1958: 1857:"Murmur3A and Murmur3F Java classes on Github" 1436:"MurmurHash3 (see note on MurmurHash2_x86_64)" 2275:"Breaking Murmur: Hash-flooding DoS Reloaded" 1652: 1544:"C implementation in qLibc by Seungyoung Kim" 1702:"PHP userland implementation of MurmurHash3" 1167:The quick brown fox jumps over the lazy dog 1147:The quick brown fox jumps over the lazy dog 1301:: CS1 maint: numeric names: authors list ( 1502: 1500: 1342:. Simonhf.wordpress.com. 25 September 2010 1315: 1961:"Javascript implementation by Ray Morgan" 1902: 1332: 1211: 1209: 1825:"Scala standard library implementation" 1506: 1497: 14: 2298: 2189:"hash.cc in vowpalwabbit source code" 1206: 294:Hash functions can be vulnerable to 1582: 284:RedHat Virtual Data Optimizer (VDO) 131:The canonical implementation is in 24: 1938:"goncalossilva/kotlinx-murmurhash" 1724:"PHP 8.1 with MurmurHash3 support" 289: 126: 25: 2317: 2306:Hash function (non-cryptographic) 2284: 1981: 1738:"tarballs_are_good / murmurhash3" 1653:Yuki Kurihara (16 October 2014). 1507:Horvath, Adam (10 August 2012). 1195:Non-cryptographic hash functions 2267: 2255: 2243:"Kafka DefaultPartitioner.java" 2235: 2215: 2201: 2181: 2167: 2149: 2127: 2105: 2083: 2063: 2038: 2011: 1990: 1975: 1952: 1930: 1919: 1896: 1871: 1849: 1837: 1817: 1795: 1773: 1751: 1730: 1716: 1694: 1669: 1646: 1624: 1599: 1576: 1556: 1536: 1515: 1477: 1455: 1428: 1281:"MurmurHash first announcement" 37:non-cryptographic hash function 2137:. apache.org. 15 November 2013 1940:. GitHub.com. 10 December 2021 1401: 1381: 1354: 1309: 1272: 1247: 1235: 117: 79: 59: 13: 1: 2113:"Kyoto Cabinet specification" 1903:Daisuke T (7 February 2019). 1200: 317: 70:Fowler–Noll–Vo hash function 49:cryptographic hash functions 7: 2115:. Fallabs.com. 4 March 2011 2071:"switch from MD5 to murmur" 1587:. Landman-code.blogspot.com 1260:(in Portuguese). p. 14 1188: 93:Merkle–Damgård construction 54: 10: 2322: 2175:"Solr MurmurHash2 Javadoc" 580:/* Read in groups of 4. */ 308:differential cryptanalysis 250:(nodejs package manager), 1283:. Tanjent.livejournal.com 1002:Hash value (hexadecimal) 306:attacks. With the use of 406: 2261:Virtual Data Optimizer 1485:"MurmurHash3 on Github" 1389:"MurmurHash2 on Github" 2291:Official SMHasher site 1783:. package.elm-lang.org 1632:"Toru Maesaka in Perl" 1523:"pyfasthash in Python" 1761:. Hackage.haskell.org 1005:Hash value (decimal) 2223:"Guava Hashing.java" 1959:raycmorgan (owner). 1879:"bipthelin/murmerl3" 1833:. 26 September 2014. 1655:"Digest::MurmurHash" 1585:"Davy Landman in C#" 769:/* Read the rest. */ 371:remainingBytesInKey 238:, libmemcached (the 1465:. 25 September 2010 992: 300:Daniel J. Bernstein 1905:"MurmurHash-Swift" 1677:"stusmall/murmur3" 1223:on 12 January 2012 990: 871:murmur_32_scramble 691:murmur_32_scramble 418:murmur_32_scramble 95:. Slightly slower. 2177:. 31 August 2022. 1963:. Gist.github.com 1463:"MurmurHash2_160" 1409:"MurmurHash2Flaw" 1340:"MurmurHash2-160" 1186: 1185: 360:fourByteChunk of 296:collision attacks 258:, Kyoto Cabinet, 27:Computer function 16:(Redirected from 2313: 2279: 2278: 2271: 2265: 2259: 2253: 2252: 2239: 2233: 2232: 2219: 2213: 2212: 2205: 2199: 2198: 2185: 2179: 2178: 2171: 2165: 2164: 2163:. 10 April 2019. 2153: 2147: 2146: 2144: 2142: 2131: 2125: 2124: 2122: 2120: 2109: 2103: 2102: 2100: 2098: 2087: 2081: 2080: 2067: 2061: 2060: 2058: 2056: 2050:libmemcached.org 2042: 2036: 2035: 2033: 2031: 2015: 2009: 2008: 2006: 2004: 1994: 1988: 1987: 1979: 1973: 1972: 1970: 1968: 1956: 1950: 1949: 1947: 1945: 1934: 1928: 1923: 1917: 1916: 1914: 1912: 1900: 1894: 1893: 1891: 1889: 1875: 1869: 1868: 1866: 1864: 1853: 1847: 1841: 1835: 1834: 1821: 1815: 1814: 1812: 1810: 1799: 1793: 1792: 1790: 1788: 1777: 1771: 1770: 1768: 1766: 1755: 1749: 1748: 1746: 1744: 1734: 1728: 1727: 1720: 1714: 1713: 1711: 1709: 1698: 1692: 1691: 1689: 1687: 1673: 1667: 1666: 1664: 1662: 1650: 1644: 1643: 1641: 1639: 1628: 1622: 1621: 1619: 1617: 1603: 1597: 1596: 1594: 1592: 1580: 1574: 1573: 1560: 1554: 1553: 1540: 1534: 1533: 1531: 1529: 1519: 1513: 1512: 1504: 1495: 1494: 1481: 1475: 1474: 1472: 1470: 1459: 1453: 1452: 1450: 1448: 1432: 1426: 1425: 1423: 1421: 1405: 1399: 1398: 1385: 1379: 1378: 1376: 1374: 1358: 1352: 1351: 1349: 1347: 1336: 1330: 1329: 1327: 1325: 1316:Austin Appleby. 1313: 1307: 1306: 1300: 1292: 1290: 1288: 1276: 1270: 1269: 1267: 1265: 1259: 1255:"Couceiro et al" 1251: 1245: 1239: 1233: 1232: 1230: 1228: 1217:"Hadoop in Java" 1213: 1182: 1177: 1172: 1162: 1157: 1152: 1142: 1137: 1132: 1122: 1117: 1112: 1102: 1097: 1092: 1082: 1077: 1072: 1062: 1057: 1052: 1043: 1038: 1033: 1024: 1019: 1014: 993: 989: 986: 983: 980: 977: 974: 971: 968: 965: 962: 959: 956: 953: 950: 947: 944: 941: 938: 935: 932: 929: 926: 923: 920: 917: 914: 911: 908: 905: 902: 899: 896: 893: 890: 887: 884: 881: 878: 875: 872: 869: 866: 863: 860: 857: 854: 851: 848: 845: 842: 839: 836: 833: 830: 827: 824: 821: 818: 815: 812: 809: 806: 803: 800: 797: 794: 791: 788: 785: 782: 779: 776: 773: 770: 767: 764: 761: 758: 755: 752: 749: 746: 743: 740: 737: 734: 731: 728: 725: 722: 719: 716: 713: 710: 707: 704: 701: 698: 695: 692: 689: 686: 683: 680: 677: 674: 671: 668: 665: 662: 659: 656: 653: 650: 647: 644: 641: 638: 635: 632: 629: 626: 623: 620: 617: 614: 611: 608: 605: 602: 599: 596: 593: 590: 587: 584: 581: 578: 575: 572: 569: 566: 563: 560: 557: 554: 551: 548: 545: 542: 539: 536: 533: 530: 527: 524: 521: 518: 515: 512: 509: 506: 503: 500: 497: 494: 491: 488: 485: 482: 479: 476: 473: 470: 467: 464: 461: 458: 455: 452: 449: 446: 443: 440: 437: 434: 431: 428: 425: 422: 419: 416: 413: 410: 336: 21: 2321: 2320: 2316: 2315: 2314: 2312: 2311: 2310: 2296: 2295: 2287: 2282: 2273: 2272: 2268: 2260: 2256: 2241: 2240: 2236: 2221: 2220: 2216: 2207: 2206: 2202: 2187: 2186: 2182: 2173: 2172: 2168: 2155: 2154: 2150: 2140: 2138: 2133: 2132: 2128: 2118: 2116: 2111: 2110: 2106: 2096: 2094: 2093:. 24 March 2009 2089: 2088: 2084: 2069: 2068: 2064: 2054: 2052: 2044: 2043: 2039: 2029: 2027: 2017: 2016: 2012: 2002: 2000: 1996: 1995: 1991: 1980: 1976: 1966: 1964: 1957: 1953: 1943: 1941: 1936: 1935: 1931: 1924: 1920: 1910: 1908: 1901: 1897: 1887: 1885: 1877: 1876: 1872: 1862: 1860: 1855: 1854: 1850: 1846:, part of Guava 1842: 1838: 1823: 1822: 1818: 1808: 1806: 1801: 1800: 1796: 1786: 1784: 1779: 1778: 1774: 1764: 1762: 1757: 1756: 1752: 1742: 1740: 1736: 1735: 1731: 1722: 1721: 1717: 1707: 1705: 1700: 1699: 1695: 1685: 1683: 1675: 1674: 1670: 1660: 1658: 1651: 1647: 1637: 1635: 1630: 1629: 1625: 1615: 1613: 1605: 1604: 1600: 1590: 1588: 1583:Landman, Davy. 1581: 1577: 1564:"murmur3 in Go" 1562: 1561: 1557: 1542: 1541: 1537: 1527: 1525: 1521: 1520: 1516: 1505: 1498: 1483: 1482: 1478: 1468: 1466: 1461: 1460: 1456: 1446: 1444: 1434: 1433: 1429: 1419: 1417: 1407: 1406: 1402: 1387: 1386: 1382: 1372: 1370: 1360: 1359: 1355: 1345: 1343: 1338: 1337: 1333: 1323: 1321: 1314: 1310: 1294: 1293: 1286: 1284: 1277: 1273: 1263: 1261: 1257: 1253: 1252: 1248: 1240: 1236: 1226: 1224: 1215: 1214: 1207: 1203: 1191: 1180: 1175: 1170: 1160: 1155: 1150: 1140: 1135: 1130: 1120: 1115: 1110: 1100: 1095: 1090: 1080: 1075: 1070: 1060: 1055: 1050: 1041: 1036: 1031: 1022: 1017: 1012: 988: 987: 984: 981: 978: 975: 972: 969: 966: 963: 960: 957: 954: 951: 948: 945: 942: 939: 936: 933: 930: 927: 924: 921: 918: 915: 912: 909: 906: 903: 900: 897: 894: 891: 888: 885: 883:/* Finalize. */ 882: 879: 876: 873: 870: 867: 864: 861: 858: 855: 852: 849: 846: 843: 840: 837: 834: 831: 828: 825: 822: 819: 816: 813: 810: 807: 804: 801: 798: 795: 792: 789: 786: 783: 780: 777: 774: 771: 768: 765: 762: 759: 756: 753: 750: 747: 744: 741: 738: 735: 732: 729: 726: 723: 720: 717: 714: 711: 708: 705: 702: 699: 696: 693: 690: 687: 684: 681: 678: 675: 672: 669: 666: 663: 660: 657: 654: 651: 648: 645: 642: 639: 636: 633: 630: 627: 624: 621: 618: 615: 612: 609: 606: 603: 600: 597: 594: 591: 588: 585: 582: 579: 576: 573: 570: 567: 564: 561: 558: 555: 552: 549: 546: 543: 540: 537: 534: 531: 528: 525: 522: 519: 516: 513: 510: 507: 504: 501: 498: 495: 492: 489: 486: 483: 480: 477: 474: 471: 468: 465: 462: 459: 456: 453: 450: 447: 444: 441: 438: 435: 432: 429: 426: 423: 420: 417: 414: 411: 408: 402: 334: 320: 292: 290:Vulnerabilities 129: 127:Implementations 120: 82: 62: 57: 28: 23: 22: 15: 12: 11: 5: 2319: 2309: 2308: 2294: 2293: 2286: 2285:External links 2283: 2281: 2280: 2266: 2254: 2234: 2214: 2200: 2180: 2166: 2148: 2135:"Partitioners" 2126: 2104: 2082: 2062: 2046:"libMemcached" 2037: 2010: 1989: 1984:"OCaml Source" 1974: 1951: 1929: 1918: 1895: 1870: 1848: 1836: 1816: 1794: 1772: 1750: 1729: 1715: 1693: 1668: 1645: 1634:. metacpan.org 1623: 1598: 1575: 1555: 1535: 1514: 1496: 1476: 1454: 1427: 1400: 1380: 1353: 1331: 1308: 1271: 1246: 1234: 1204: 1202: 1199: 1198: 1197: 1190: 1187: 1184: 1183: 1178: 1173: 1168: 1164: 1163: 1158: 1153: 1148: 1144: 1143: 1138: 1133: 1128: 1127:Hello, world! 1124: 1123: 1118: 1113: 1108: 1107:Hello, world! 1104: 1103: 1098: 1093: 1088: 1084: 1083: 1078: 1073: 1068: 1064: 1063: 1058: 1053: 1048: 1045: 1044: 1039: 1034: 1029: 1026: 1025: 1020: 1015: 1010: 1007: 1006: 1003: 1000: 997: 407: 321: 319: 316: 291: 288: 128: 125: 119: 116: 112: 111: 108: 105: 102: 99: 96: 89: 81: 78: 61: 58: 56: 53: 26: 9: 6: 4: 3: 2: 2318: 2307: 2304: 2303: 2301: 2292: 2289: 2288: 2276: 2270: 2264: 2258: 2250: 2249: 2244: 2238: 2230: 2229: 2224: 2218: 2210: 2204: 2196: 2195: 2190: 2184: 2176: 2170: 2162: 2158: 2152: 2136: 2130: 2114: 2108: 2092: 2086: 2078: 2077: 2072: 2066: 2051: 2047: 2041: 2026: 2025: 2020: 2014: 1999: 1993: 1986:. GitHub.com. 1985: 1978: 1962: 1955: 1939: 1933: 1927: 1922: 1906: 1899: 1884: 1880: 1874: 1858: 1852: 1845: 1840: 1832: 1831: 1826: 1820: 1805:. clojure.org 1804: 1798: 1782: 1776: 1760: 1754: 1739: 1733: 1725: 1719: 1703: 1697: 1682: 1678: 1672: 1656: 1649: 1633: 1627: 1612: 1608: 1602: 1586: 1579: 1571: 1570: 1565: 1559: 1551: 1550: 1545: 1539: 1524: 1518: 1510: 1503: 1501: 1492: 1491: 1486: 1480: 1464: 1458: 1443: 1442: 1437: 1431: 1416: 1415: 1410: 1404: 1396: 1395: 1390: 1384: 1369: 1368: 1363: 1362:"MurmurHash1" 1357: 1341: 1335: 1319: 1312: 1304: 1298: 1282: 1275: 1256: 1250: 1243: 1238: 1222: 1218: 1212: 1210: 1205: 1196: 1193: 1192: 1179: 1174: 1169: 1166: 1165: 1159: 1154: 1149: 1146: 1145: 1139: 1134: 1129: 1126: 1125: 1121:3,224,780,355 1119: 1114: 1109: 1106: 1105: 1101:1,883,996,636 1099: 1094: 1089: 1086: 1085: 1081:3,127,628,307 1079: 1074: 1069: 1066: 1065: 1061:2,180,083,513 1059: 1054: 1049: 1047: 1046: 1042:1,364,076,727 1040: 1035: 1030: 1028: 1027: 1021: 1016: 1011: 1009: 1008: 1004: 1001: 998: 995: 994: 405: 400: 396: 393: 390: 387: 384: 381: 378: 374: 370: 366: 363: 359: 356: 352: 348: 344: 341: 338: 331: 328: 324: 315: 313: 309: 305: 301: 297: 287: 285: 281: 277: 273: 272:Elasticsearch 269: 268:vowpal wabbit 265: 261: 257: 253: 249: 245: 241: 237: 234:(ver 1.0.1), 233: 229: 224: 222: 218: 214: 210: 209:Object Pascal 206: 202: 198: 194: 190: 186: 182: 178: 174: 170: 166: 162: 158: 154: 150: 146: 142: 138: 134: 124: 115: 109: 106: 103: 100: 97: 94: 90: 87: 86: 85: 77: 75: 71: 67: 52: 50: 45: 42: 38: 34: 30: 19: 2269: 2257: 2246: 2237: 2226: 2217: 2203: 2192: 2183: 2169: 2160: 2151: 2139:. Retrieved 2129: 2117:. Retrieved 2107: 2095:. Retrieved 2085: 2074: 2065: 2053:. Retrieved 2049: 2040: 2028:. Retrieved 2022: 2013: 2001:. Retrieved 1992: 1977: 1965:. Retrieved 1954: 1942:. Retrieved 1932: 1921: 1909:. Retrieved 1907:. GitHub.com 1898: 1886:. Retrieved 1882: 1873: 1861:. Retrieved 1859:. greenrobot 1851: 1839: 1828: 1819: 1807:. Retrieved 1797: 1785:. Retrieved 1775: 1763:. Retrieved 1753: 1741:. Retrieved 1732: 1718: 1706:. Retrieved 1704:. github.com 1696: 1684:. Retrieved 1680: 1671: 1659:. Retrieved 1657:. GitHub.com 1648: 1636:. Retrieved 1626: 1614:. Retrieved 1610: 1601: 1589:. Retrieved 1578: 1567: 1558: 1547: 1538: 1526:. Retrieved 1517: 1488: 1479: 1467:. Retrieved 1457: 1445:. Retrieved 1439: 1430: 1418:. Retrieved 1412: 1403: 1392: 1383: 1371:. Retrieved 1365: 1356: 1344:. Retrieved 1334: 1324:23 September 1322:. Retrieved 1320:. Github.com 1311: 1285:. Retrieved 1274: 1262:. Retrieved 1249: 1242:Chouza et al 1237: 1225:. Retrieved 1221:the original 996:Test string 403: 398: 394: 391: 388: 385: 382: 379: 376: 372: 368: 364: 361: 357: 354: 350: 346: 342: 339: 332: 329: 326: 322: 293: 225: 130: 121: 113: 83: 63: 46: 32: 31: 29: 2263:source code 2141:19 December 2030:29 February 1944:14 December 1911:10 February 1708:18 December 1686:29 November 1181:799,549,133 1161:776,992,547 1141:612,912,314 999:Seed value 325:Murmur3_32 242:driver for 230:(ver 4.6), 177:Common Lisp 118:MurmurHash3 80:MurmurHash2 60:MurmurHash1 2119:13 January 2097:13 January 2055:21 October 2019:"Rubinius" 2003:13 January 1967:13 January 1888:21 October 1863:5 November 1765:13 January 1743:7 February 1638:13 January 1616:5 November 1591:13 January 1528:13 January 1469:12 January 1447:15 January 1420:15 January 1373:12 January 1346:13 January 1318:"SMHasher" 1287:13 January 1264:13 January 1227:13 January 1201:References 1176:0x2FA826CD 1171:0x9747b28c 1156:0x2e4ff723 1151:0x00000000 1136:0x24884CBA 1131:0x9747b28c 1116:0xc0363e43 1111:0x00000000 1096:0x704b81dc 1091:0x9747b28c 1076:0xba6bd213 1071:0x00000000 1056:0x81F16F39 1051:0xffffffff 1037:0x514E28B7 1032:0x00000001 1018:0x00000000 1013:0x00000000 952:0xc2b2ae35 922:0x85ebca6b 760:0xe6546b64 514:murmur3_32 493:0x1b873593 442:0xcc9e2d51 217:JavaScript 72:) with an 33:MurmurHash 2091:"maatkit" 1759:"Haskell" 1611:dlang.org 832:<<= 323:algorithm 318:Algorithm 314:instead. 260:Cassandra 244:Memcached 228:libstdc++ 2300:Category 1809:11 March 1661:18 March 1297:cite web 1189:See also 967:>> 937:>> 907:>> 733:>> 715:<< 679:uint32_t 661:uint32_t 601:>> 571:uint32_t 556:uint32_t 544:uint32_t 511:uint32_t 478:>> 460:<< 424:uint32_t 415:uint32_t 369:with any 358:for each 236:Rubinius 74:Xorshift 55:Variants 2161:YouTube 1998:"nginx" 1982:INRIA. 1844:Murmur3 1787:12 June 523:uint8_t 312:SipHash 304:HashDoS 252:maatkit 189:Clojure 181:Haskell 66:Lookup3 47:Unlike 18:Murmur3 2248:GitHub 2228:GitHub 2194:GitHub 2076:GitHub 2024:GitHub 1883:GitHub 1830:GitHub 1681:GitHub 1569:GitHub 1549:GitHub 1490:GitHub 1441:GitHub 1414:GitHub 1394:GitHub 1367:GitHub 991:Tests 976:return 790:size_t 673:sizeof 655:sizeof 634:memcpy 589:size_t 535:size_t 499:return 412:inline 409:static 340:input: 282:, and 256:Hadoop 219:, and 213:Kotlin 201:Erlang 137:Python 41:GitHub 1781:"Elm" 1258:(PDF) 1087:test 1067:test 802:& 640:& 520:const 280:Kafka 276:Guava 232:nginx 221:OCaml 205:Swift 193:Scala 35:is a 2143:2013 2121:2012 2099:2012 2057:2015 2032:2012 2005:2012 1969:2012 1946:2021 1913:2019 1890:2015 1865:2014 1811:2014 1789:2019 1767:2012 1745:2015 1710:2017 1688:2015 1663:2015 1640:2012 1618:2016 1593:2012 1530:2012 1471:2019 1449:2019 1422:2019 1375:2019 1348:2012 1326:2024 1303:link 1289:2012 1266:2012 1229:2012 565:seed 547:seed 355:seed 351:seed 264:Solr 197:Java 169:Rust 165:Ruby 161:Perl 892:len 847:key 799:len 784:for 667:key 664:)); 649:key 598:len 583:for 538:len 529:key 399:len 362:key 347:len 343:key 248:npm 246:), 185:Elm 173:PHP 157:Lua 133:C++ 2302:: 2245:. 2225:. 2191:. 2159:. 2073:. 2048:. 2021:. 1881:. 1827:. 1679:. 1609:. 1566:. 1546:. 1499:^ 1487:. 1438:. 1411:. 1391:. 1364:. 1299:}} 1295:{{ 1208:^ 970:16 961:^= 949:*= 940:13 931:^= 919:*= 910:16 901:^= 889:^= 880:); 868:^= 844:|= 820:-- 739:); 736:19 718:13 700:); 688:^= 682:); 670:+= 619:-- 490:*= 484:); 481:17 463:15 439:*= 373:do 365:do 349:, 345:, 327:is 286:. 278:, 274:, 270:, 266:, 262:, 254:, 223:. 215:, 211:, 207:, 203:, 199:, 195:, 191:, 187:, 183:, 179:, 175:, 171:, 167:, 163:, 159:, 155:, 151:, 149:C# 147:, 145:Go 143:, 139:, 76:. 2277:. 2251:. 2231:. 2211:. 2197:. 2145:. 2123:. 2101:. 2079:. 2059:. 2034:. 2007:. 1971:. 1948:. 1915:. 1892:. 1867:. 1813:. 1791:. 1769:. 1747:. 1726:. 1712:. 1690:. 1665:. 1642:. 1620:. 1595:. 1572:. 1552:. 1532:. 1511:. 1493:. 1473:. 1451:. 1424:. 1397:. 1377:. 1350:. 1328:. 1305:) 1291:. 1268:. 1244:. 1231:. 1023:0 985:} 982:; 979:h 973:; 964:h 958:h 955:; 946:h 943:; 934:h 928:h 925:; 916:h 913:; 904:h 898:h 895:; 886:h 877:k 874:( 865:h 853:} 850:; 841:k 838:; 835:8 829:k 826:{ 823:) 817:i 814:; 811:i 808:; 805:3 796:= 793:i 787:( 781:; 778:0 775:= 772:k 766:} 763:; 757:+ 754:5 751:* 748:h 745:= 742:h 730:h 727:( 724:| 721:) 712:h 709:( 706:= 703:h 697:k 694:( 685:h 676:( 658:( 652:, 646:, 643:k 637:( 625:{ 622:) 616:i 613:; 610:i 607:; 604:2 595:= 592:i 586:( 577:; 574:k 568:; 562:= 559:h 553:{ 550:) 541:, 532:, 526:* 517:( 508:} 505:; 502:k 496:; 487:k 475:k 472:( 469:| 466:) 457:k 454:( 451:= 448:k 445:; 436:k 433:{ 430:) 427:k 421:( 337:. 335:2 240:C 153:D 141:C 20:)

Index

Murmur3
non-cryptographic hash function
GitHub
cryptographic hash functions
Lookup3
Fowler–Noll–Vo hash function
Xorshift
Merkle–Damgård construction
C++
Python
C
Go
C#
D
Lua
Perl
Ruby
Rust
PHP
Common Lisp
Haskell
Elm
Clojure
Scala
Java
Erlang
Swift
Object Pascal
Kotlin
JavaScript

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.