如何将提取的值转换回原始值?

时间:2017-02-07 13:22:49

标签: c#

我使用以下方法创建十六进制密钥,在此实例中返回“41AE-1456D”。有没有办法拿出钥匙“41AE-1456D”并回到原来的Guid值?

var g = "b4a76e9d-f9d6-48f1-a11c-d08a2c8cfcc2"+ "0001";
var b = Encoding.ASCII.GetBytes(g);
var s = BitConverter.ToUInt32(b, 8).ToString();
var s11 = Convert.ToInt32(s.Substring(0, l1)).ToString("X");
var s12 = Convert.ToInt32(s.Substring(l2)).ToString("X");
var ss = string.Format("{0}-{1}", s11, s12);

我对ToUint32声明感到困惑。我似乎无法想办法获得原始字节。

1 个答案:

答案 0 :(得分:0)

不,因为36位摘要中的信息太少而无法重建原始的128位(忽略了你似乎包含破折号的事实,并且从偏移8开始,这是第一个破折号,所以LSB s的常量为0x2D)。

鉴于您实际上只使用了32位(一个uint),无论您为l1l2选择了什么值,都会丢失96位。

你可以做的是找到2 116 GUID,当使用你的代码消化时,将返回相同的摘要。有点像MD5漏洞如何运作。