使用C#使用Microsoft Crypto API解密字符串

时间:2013-09-05 07:11:01

标签: c# asp.net encryption cryptoapi mscapi

所以在我的工作场所,我有一个基于.NET的Web应用程序,它必须在查询字符串中选择加密参数。

那些提供加密字符串的人是一个外部承包商,他们更喜欢(几乎要求。不能改变承包商,更高层决定那些东西......),使用微软的Crypto API来加密字符串。

嗯,公平,AFAIK我可以用C#解密,但经过无休止的搜索后,我仍然对它的工作方式感到茫然。

这意味着我甚至无法提供示例代码,而且我仍然坚持使用此绑定,直到我可以解密此字符串。

我拥有的是:

我有他们加密的公共密码,我必须用它来解密。

加密设置为:“CALC_AES_128”哈希:“CALC_MD5”。该字符串已加密,然后进行散列。

所以我想解开它并解密它。

我知道很多问题,但我该如何解决呢?

1 个答案:

答案 0 :(得分:1)

您的外部承包商不知道他在说什么。

哈希被用作陷阱门功能,一种识别某事物而不被告知是什么东西的方法。这是一个数字指纹。进行CRYPTOGRAPHICALLY SECURE哈希的方式意味着即使给定哈希和算法,也很难创建与指纹匹配的对象。

AES是一种非确定性的密码。非确定性来自初始化向量,每次都是一个随机数(不是从掷骰子硬编码,也就是索尼)。这意味着,对于所有意图和目的,AES的输出是纯随机的(除非您有密钥)。好的密码都设计用于生成统计随机的数据(因此很少有数据可以形成攻击)。

因此,通过将数据输入到创建随机数据的函数中,然后将其放入陷阱门函数中,您就会产生一些真正难以解码的东西(从这个意义上来说,在数学上很难实际上需要比在宇宙来计算这个)。

如何在查询字符串中以安全的方式(安全地反对在不安全的网络上窥探)安全地发送数据?有一个众所周知的协议,.net支持这样做非常好。它叫做HTTPS。