1

我继承了一个项目,在该项目中,以前的开发人员使用调用的 ASP 对象ActiveCrypt.Crypt来加密用户密码,然后再将其发送到数据库。

该调用使用encryptvariant()模式为 7 的函数,我能找到的唯一文档表明加密是 3DES(公司现已解散)。问题是,从函数派生的值似乎是一个 base64 编码的字符串(尾随的单双“==”是一个死的赠品)。

是否还有其他经常以“=”或“==”结尾的编码?有人熟悉这个 ActiveCrypt 对象吗?我尝试使用密钥对密码进行 3DES 编码,然后转换为 base64,但没有运气。我还尝试反转密钥和密码,以防开发人员交换参数。任何帮助,将不胜感激。

使用键“key”的一些示例(不带引号)

abcdefg: xiupz3RT148=

123456: iDLXPSPPjd4=

test: AWulSF10FR0=

1234567890: 8I48MAg9YWvE3y52VfMYew==
4

1 回答 1

0

您显示的编码看起来像使用普通 base64 编码的 8 和 16 字节。Base64 使用 4 个字符对 3 个字节进行编码。DES 和 3DES 以 8 字节的块大小运行。因此 base64 文本的大小似乎反映了块大小。此外,base 64 解码的输出看起来完全随机。

因此,在 base64 解码之后,您将拥有 8 或 16 个字节,然后您必须对其进行解密。关键我们当然不知道,块操作模式和填充模式也是如此。所以你必须自己找出那些。如果未给出密钥,则可能在应用程序中对其进行硬编码。

狩猎愉快。

于 2013-10-30T19:33:27.523 回答