使用AES-128 cbc方法通过JavaScript进行内容解密

时间:2016-08-10 03:11:12

标签: encryption aes

我正在开发 ChromeApp 。在这个应用程序中,我们需要渲染一些HTML,JPEG,PDF文件。但所有这些文件都使用 AES-128-CBC 加密方法加密。我们需要通过JavaScript使用AES-128-CBC方法解密 html,jpeg,png和pdf文件。我尝试过以下代码来解密,但它没有给出预期的输出:



var ciphertext = '®0Ž.v£=p?°–æ£ËkRdKÓ”‹1Š"°?¥yAÈ_fëo	e=Î} ú¿¯¢GE$iV×î’ÚÐøUJ²4Fœ‰=ÄQËÐ*R<Ã(ÕÎFÔ©—+Ùøä[„”Æ29ÿªSÆsi¬ôÓÆ@qÒÞãýñ?!ÉnÑZp²/öÇ~P‘/¿¡ç%í~Ô43]ÃÎG¾‹,+tPÜAàÛLkæ«œ‘ɳf	ç·ržúž´J›Ãá¥u®ÞFNœüÊöeL´Jîn<jí<ô¡ îÚY¥N6B•@¬˜krXyëÑtL<ú^ñ!±®¤–ÆœŸÌÉ£R¹ŒPþ*´¬/ú4´š7®´SóOgªr‹©;ï^îì­L5̩㎣¡ØÏÞµð’Òyí`d~Lq<I€©|Ñ%ÚSâå½n.»5|zFÔR_ÀèbeẎÇ&Ù3ìñjk¦®7';

function decryptPage()
{

	var originalKey = 'SuGpNMqP;md,(%F{';
	//var originalKey = '537547704e4d71503b6d642c2825467b';

	key = CryptoJS.enc.Hex.parse(originalKey);

	console.log(key);

	var iv = CryptoJS.enc.Hex.parse(ciphertext.slice(0, 32));
	
	var message = CryptoJS.AES.decrypt({
	    ciphertext: ciphertext
	}, key, {
	    iv: iv
	});
	//console.log(hex2a(message.words));
	console.log('message');
	console.log(message.words);
}

decryptPage();
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
&#13;
&#13;
&#13;

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

正如评论中已经指出的那样,在JavaScript中加密/解密通常是个坏主意。

话虽如此,解密这些类型的文件原则上与解密其他类型的文件完全相同。

就加密本身而言,像AES这样的对称密钥算法的基本思想是使用相同的密钥加密和解密项目(有单独的方法可以确保双方都可以安全地交换密钥,通常依赖在public-key cryptography上;例如,请参阅Diffie-Hellman Key Exchange algorithm)。通常,解密或多或少是首先用于加密的过程的逆转。

这些算法的安全性取决于密钥的保密性和算法本身的强度,在算法的保密性中。因此,例如,知道您使用AES加密和解密邮件这一事实肯定足以让我能够恢复邮件内容的信息(除非我能以某种方式恢复您的密钥,这就是为什么以安全的方式存储它,安全地进行所有密钥交换以及定期轮换密钥的重要性。

一般来说,有大量关于加密和加密的教程。例如,下面是一个:
http://www.tutorialspoint.com/cryptography/
关于这个主题的维基百科文章也很不错。