【发布时间】:2011-08-04 16:17:15
【问题描述】:
给定代码:
uint Function(uint value)
{
return value * 0x123456D;
}
输入值 0x300 会产生结果 0x69D04700。这只是结果的低 32 位。 给定结果 0x69D04700 和因子 0x123456D,是否可以快速检索所有数字,例如 (value * 0x123456D) & 0xFFFFFFFF = 0x69D04700?
编辑:我显示的代码是伪代码 - 我无法扩大返回类型。
【问题讨论】:
-
你可以使用 UInt64 来获得更大的范围吗?
-
否 -- 我现在已经编辑了我的问题以表明这一点。
-
根据我的计算,输入 300 产生 0x55555BBC。除非 C# 做奇怪的事情来溢出。
-
是的,我将计算器设置为十六进制。它是 0x300,而不是 300。我已经编辑了我的问题。
-
你为什么用安全标记它?
标签: c# security math overflow reverse