0

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

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

好吧,很公平,AFAIK 我可以用 C# 解密它,但经过无休止的搜索,我仍然不知道它是如何工作的。

这意味着我什至无法提供示例代码,并且我被困在这个绑定中,直到我可以解密这个字符串。

我所拥有的是:

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

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

所以我想取消它,并解密它。

我知道有很多问题要问,但我该怎么做呢?

4

1 回答 1

1

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

哈希被用作活板门功能,一种在不被告知事物是什么的情况下识别事物的方法。它是一种数字指纹。制作 CRYPTOGRAPHICALLY SECURE 散列的方式意味着即使给定散列和算法,也很难创建与指纹匹配的对象。

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

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

至于如何在查询字符串中以安全的方式发送数据(安全,防止窥探不安全的网络)?.net 支持一个众所周知的协议,可以很好地做到这一点。它称为HTTPS。

于 2013-09-05T07:38:28.653 回答