Код:
неподписанных INT MurmurHash3 (беззнаковое целочисленное значение nHashSeed, Const станд :: вектор<неподписанные символ>& vDataToHash)
{
// Ниже MurmurHash3 (x86_32), см http://code.google.com/p/smhasher/source/browse/trunk/MurmurHash3.cpp
uint32_t h1 = nHashSeed;
Const uint32_t с1 = 0xcc9e2d51;
Const uint32_t c2 = 0x1b873593;
Const INT nblocks = vDataToHash.size () / 4;
// ----------
// тело
Const uint32_t * блоки = (Const uint32_t *) (&vDataToHash [0] + nblocks * 4);
для (INT I = -nblocks; я; я ++)
{
uint32_t k1 = блоки [I];
k1 * = с1;
k1 = ROTL32 (k1,15);
k1 * = c2;
h1 = k1;
h1 = ROTL32 (h1,13);
h1 = h1 * 5 + 0xe6546b64;
}
// ----------
// хвост
Const uint8_t * хвост = (Const uint8_t *) (&vDataToHash [0] + nblocks * 4);
uint32_t k1 = 0;
Переключатель (vDataToHash.size () & 3)
{
Случай 3: k1 = хвост [2] << 16;
Случай 2: k1 = хвост [1] << 8;
Случай 1: k1 = хвост [0];
k1 * = с1; k1 = ROTL32 (k1,15); k1 * = c2; h1 = k1;
};
// ----------
// финализации
h1 = vDataToHash.size ();
h1 = h1 >> 16;
h1 * = 0x85ebca6b;
h1 = h1 >> 13;
h1 * = 0xc2b2ae35;
h1 = h1 >> 16;
вернуться h1;
}
{
// Ниже MurmurHash3 (x86_32), см http://code.google.com/p/smhasher/source/browse/trunk/MurmurHash3.cpp
uint32_t h1 = nHashSeed;
Const uint32_t с1 = 0xcc9e2d51;
Const uint32_t c2 = 0x1b873593;
Const INT nblocks = vDataToHash.size () / 4;
// ----------
// тело
Const uint32_t * блоки = (Const uint32_t *) (&vDataToHash [0] + nblocks * 4);
для (INT I = -nblocks; я; я ++)
{
uint32_t k1 = блоки [I];
k1 * = с1;
k1 = ROTL32 (k1,15);
k1 * = c2;
h1 = k1;
h1 = ROTL32 (h1,13);
h1 = h1 * 5 + 0xe6546b64;
}
// ----------
// хвост
Const uint8_t * хвост = (Const uint8_t *) (&vDataToHash [0] + nblocks * 4);
uint32_t k1 = 0;
Переключатель (vDataToHash.size () & 3)
{
Случай 3: k1 = хвост [2] << 16;
Случай 2: k1 = хвост [1] << 8;
Случай 1: k1 = хвост [0];
k1 * = с1; k1 = ROTL32 (k1,15); k1 * = c2; h1 = k1;
};
// ----------
// финализации
h1 = vDataToHash.size ();
h1 = h1 >> 16;
h1 * = 0x85ebca6b;
h1 = h1 >> 13;
h1 * = 0xc2b2ae35;
h1 = h1 >> 16;
вернуться h1;
}
Что / почему там murmurhash в середине Bitcoin?
Что это делает, все тоже, и почему не я не слышал об этом где-нибудь? Я не очень опытный с криптографией, поэтому подробное объяснение было бы здорово
Благодаря,