2013-10-30 255 views
1

我已经继承了一个项目,其中以前的开发人员在将用户密码发送到数据库之前使用名为ActiveCrypt.Crypt的ASP对象进行加密。除了以“=”结尾的base64还有其他编码方法吗?

该调用使用encryptvariant()函数,其模式为7,我可以找到唯一的文档表明加密是3DES(公司现在已不存在)。问题是,从函数派生的值看起来是一个base64编码的字符串(尾随的单倍和双倍“==”是一个无用的赠送)。

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

使用钥匙的“钥匙”的一些例子(不带引号)

abcdefg: xiupz3RT148= 

123456: iDLXPSPPjd4= 

test: AWulSF10FR0= 

1234567890: 8I48MAg9YWvE3y52VfMYew== 
+1

当然看起来像Base64。你有理由相信它不是?似乎更有可能您看到未知(或部分已知)加密方案的Base64编码输出。 –

+0

您是否使用[Base64的所有变体](http://en.wikipedia.org/wiki/Base64#Implementations_and_history)进行了检查? –

回答

0

告诉你看起来像正常的base64编码的8个16字节编码。 Base64使用4个字符编码3个字节。 DES和3DES以8字节的块大小操作。所以base64文本的大小似乎反映了块大小。此外,base 64解码的输出看起来完全是随机的。

所以在base64解码后,你将有8或16字节,然后你将不得不解密。关键当然是我们所不知道的,正如块操作模式和填充模式一样。所以你必须自己找出那些。如果没有给出密钥,则可能会在应用程序中进行硬编码。

快乐狩猎。

相关问题