我使用以下方法创建十六进制密钥,在此实例中返回“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
声明感到困惑。我似乎无法想办法获得原始字节。
答案 0 :(得分:0)
不,因为36位摘要中的信息太少而无法重建原始的128位(忽略了你似乎包含破折号的事实,并且从偏移8开始,这是第一个破折号,所以LSB s
的常量为0x2D)。
鉴于您实际上只使用了32位(一个uint
),无论您为l1
和l2
选择了什么值,都会丢失96位。
你可以做的是找到2 116 GUID,当使用你的代码消化时,将返回相同的摘要。有点像MD5漏洞如何运作。