gpt4 book ai didi

c# - 逆向工程 String.GetHashCode

转载 作者:太空狗 更新时间:2023-10-29 23:53:52 31 4
gpt4 key购买 nike

String.GetHashCode 的行为取决于程序架构。所以它将在 x86 中返回一个值,在 x64 中返回一个值。我有一个必须在 x86 上运行的测试应用程序,它必须预测必须在 x64 上运行的应用程序的哈希码输出。

下面是 String.GetHashCode 实现从 mscorwks 的反汇编。

public override unsafe int GetHashCode()
{
fixed (char* text1 = ((char*) this))
{
char* chPtr1 = text1;
int num1 = 0x15051505;
int num2 = num1;
int* numPtr1 = (int*) chPtr1;
for (int num3 = this.Length; num3 > 0; num3 -= 4)
{
num1 = (((num1 << 5) + num1) + (num1 >≫ 0x1b)) ^ numPtr1[0];
if (num3 <= 2)
{
break;
}
num2 = (((num2 << 5) + num2) + (num2 >> 0x1b)) ^ numPtr1[1];
numPtr1 += 2;
}
return (num1 + (num2 * 0x5d588b65));
}
}

任何人都可以将这个函数移植到一个安全的实现中吗??

最佳答案

哈希码不可跨平台重复,甚至不能在同一系统上多次运行同一程序。 你走错了路。不改弦更张,路难走,终有一天会泪流满面。

您想解决的真正问题是什么?是否可以编写您自己的哈希函数,作为扩展方法或作为包装类的 GetHashCode 实现并改用该函数?

关于c# - 逆向工程 String.GetHashCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8349575/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com