2013-07-22 32 views
1

我非常n00b在此。我甚至不确定我所问的是否正确。从签名哈希回来与RSA SignHash

我已经被要求解密一些软件包,但是我发现软件包没有被加密,而是软件包(byte [])有一个内部使用密码保护的.zip文件。

所以现在我必须检索该密码。我跟踪它的代码,并来到了这一点:

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

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

该代码是前一段时间制作的,更改它对我来说不是一种选择。

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

回答

2

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

不可以。一旦数据被散列,它不能被取消。

SHA也被称为“单向散列算法”。它被设计成可以将任何数量的数据放入其中,并且有限数量的数据出来。这样的东西对于检查两部分数据是否相等很有用,虽然这种方法也有缺陷(对此有各种解决方法)。

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

说了:

我跟踪它的代码,并来到了这一点:

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

+0

我可以,我正在处理这段代码。我有权访问此源代码。问题是我需要使用该方法返回的内容打开该.zip文件(该内部包含密码保护的.zip)。 我调试了代码来理解加密过程,但发现了这种情况。 –

+1

@NickLScott:我很困惑你的意思是“包装”。你是否暗示你有一个任意的字节数组来代表一个文件夹或者包含一个zip的东西?或者,字节数组是否是zip?还是其他什么东西? –

+0

我有一个任意的字节数组,代表.zip文件加上一些其他的东西作为头和一些更多的数据。 我希望这可以清除它。我的道歉不够清楚。 –