从带有RSA SignHash的签名哈希返回

时间:2013-07-22 18:25:49

标签: c# rsa

我非常喜欢这个。我甚至不确定我问的是否正确。

我被要求解密一些软件包,但是我发现软件包没有被加密,而是软件包(byte [])里面有一个.zip保护密码。

所以现在我必须检索该密码。我在代码中跟踪了它,然后来了:

lSupraHeader = lCryptoTransformRSA.SignHash(lSupraHeader, CryptoConfig.MapNameToOID("SHA512"));

lSupraHeader是一个包含(在其他事物之间)密码的字节[]。如果我从lSupraHeader获取字符串,我可以读取密码,问题是在那之后“SignHash”我再也无法得到它了,好吧,我不知道怎么做。

该代码是在不久前制作的,改变它不是我的选择。

有没有办法从那里检索密码?我正在问我提供的是什么,或者我需要别的东西,这是正确的吗?

1 个答案:

答案 0 :(得分:2)

  

有没有办法从那里检索密码?

没有。对数据进行哈希处理后,就不会没有哈希值。

SHA也称为“单向散列算法”。它的设计使得可以将任意数量的数据放入其中,并且可以输出有限数量的数据。这些东西对于检查两个数据是否相等是有用的,尽管这种方法也有缺陷(有各种解决方法)。

另一方面,加密接收数据,使用密钥,并吐出一堆大小与原始数据大小相等的随机数据。使用相同的密钥,随机数据可以不加密或解密,以产生原始数据。

说完了:

  

我在代码中跟踪了它,然后来了:

你是怎么发现的?您似乎可以访问源代码和调试器。如果是这样,那么看看你是否可以在调试器中找到“即时窗口”。您可以设置断点,执行Console.WriteLine(whatever),然后手动检索密码。这样做会使原始代码保持不变。