VB   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了vb.net – MurmurHash3测试向量大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_874_0@ 我正在尝试将 C# implementation of MurmurHash3移植到VB.Net.

它运行…但有人可以提供一些已知的测试向量来验证正确性吗?

>已知的字符串文字
>种子价值
> MurmurHash3的结果

提前致谢.

编辑:我将实现限制为只有32位MurmurHash3,但如果你也可以提供64位实现的向量,也会很好.

我终于开始创建一个MurMur3实现了,我设法翻译了SMHasher测试代码.我的实现给出了与SMHasher测试相同的结果.这意味着我终于可以提供一些有用的,并且假定为正确的测试向量.

这仅适用于Murmur3_x86_32

| Input        | Seed       | Expected   |
|--------------|------------|------------|
| (no bytes)   | 0          | 0          | with zero data and zero seed,everything becomes zero
| (no bytes)   | 1          | 0x514E28B7 | ignores nearly all the math
| (no bytes)   | 0xffffffff | 0x81F16F39 | make sure your seed uses unsigned 32-bit math
| FF FF FF FF  | 0          | 0x76293B50 | make sure 4-byte chunks use unsigned math
| 21 43 65 87  | 0          | 0xF55B516B | Endian order. UInt32 should end up as 0x87654321
| 21 43 65 87  | 0x5082EDEE | 0x2362F9DE | Special seed value eliminates initial key with xor
| 21 43 65     | 0          | 0x7E4A8634 | Only three bytes. Should end up as 0x654321
| 21 43        | 0          | 0xA0F7B07A | Only two bytes. Should end up as 0x4321
| 21           | 0          | 0x72661CF4 | Only one byte. Should end up as 0x21
| 00 00 00 00  | 0          | 0x2362F9DE | Make sure compiler doesn't see zero and convert to null
| 00 00 00     | 0          | 0x85F0B427 | 
| 00 00        | 0          | 0x30F4C306 |
| 00           | 0          | 0x514E28B7 |

对于那些将移植到没有实际数组的语言的人,我也有一些基于字符串的测试.对于这些测试:

>假设所有字符串都是UTF-8编码的
>并且不包含任何null终止符

我会以代码形式留下这些:

TestString("",0); //empty String with zero seed should give zero
TestString("",1,0x514E28B7);
TestString("",0xffffffff,0x81F16F39); //make sure seed value is handled unsigned
TestString("\0\0\0\0",0x2362F9DE); //make sure we handle embedded nulls


TestString("aaaa",0x9747b28c,0x5A97808A); //one full chunk
TestString("aaa",0x283E0130); //three characters
TestString("aa",0x5D211726); //two characters
TestString("a",0x7FA09EA6); //one character

//Endian order within the chunks
TestString("abcd",0xF0478627); //one full chunk
TestString("abc",0xC84A62DD);
TestString("ab",0x74875592);
TestString("a",0x7FA09EA6);

TestString("Hello,world!",0x24884CBA);

//Make sure you handle UTF-8 high characters. A bcrypt implementation messed this up
TestString("ππππππππ",0xD58063C1); //U+03C0: Greek small Letter Pi

//String of 256 characters.
//Make sure you don't store String lengths in a char,and overflow at 255 bytes (as OpenBSD's canonical BCrypt implementation did)
TestString(StringOfChar("a",256),0x37405BDC);

我将发布11个转换为Murmur3的SHA-2测试向量中的两个.

TestString("abc",0xB3DD93FA);
TestString("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",0xEE925B90);

最后,最重要的一个:

>关键:“快速的棕色狐狸跳过懒狗”
>种子:0x9747b28c
>哈希:0x2FA826CD

如果其他人可以从他们的实现中确认任何/所有这些向量.

而且,这些测试向量来自于从KeySetTest.cpp - VerificationTest(...)开始通过SMHasher 256迭代循环测试的实现.

这些测试来自我在Delphi中的实现.我还在Lua中创建了一个实现(在支持数组方面并不大).

大佬总结

以上是大佬教程为你收集整理的vb.net – MurmurHash3测试向量全部内容,希望文章能够帮你解决vb.net – MurmurHash3测试向量所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。