使CryptoJS和pycrypto兼容
Making CryptoJS and pycrypto compatible
我正试图弄清楚如何将CryptoJS库用于AES,但文档有些匮乏。
我遵循了他们的例子,但我似乎无法解码我在PyCrypto 中编码的东西
我的格式如下:
key = '0f3f0fe38eb5f216cb4ef0649f81d761'
ciphertext = 'Y+gwBI6R37Ko1lQmwZ57gg==FqUSqQ=='
密文有两个组成部分
iv: Y+gwBI6R37Ko1lQmwZ57gg==
encoded message: FqUSqQ==
我试着运行下面的代码,但没有成功。它在控制台中记录"。它应该解决"测试"
var decrypted =CryptoJS.AES.decrypt(ciphertext, key);
console.log( decrypted.toString(CryptoJS.enc.Utf8) );
任何指针都会很棒。感谢
我也遇到了这个问题,不幸的是,让pycrypto
与crypto-js
对话非常困难。以下是对我有效的组合:
- 在Python中加密时使用
MODE_CFB
和segment_size=128
- 您必须根据RFC 2315用Pkcs7填充字符串[第21页]
- 在JS中收到base64版本的密文后,您需要将其封装
CryptoJS.lib.CipherParams.create({ ... })
看看适用于我的代码(Python 2.7.x):
https://gist.github.com/marcoslin/8026990
我对CryptoJS没有直接的经验,但对各种其他加密库有多年的经验。几乎可以肯定的是,CryptoJS.AES.decrypt期望的密文格式与您使用的密文格式不同。您的密文由两个独立的Base64编码实体组成:
Base64(IV)+Base64(Enc(Message))
如果CryptoJS.AES.decrypt期望IV被指定为密文的一部分(它可能没有),并且期望Base64编码的密文输入(它可能根本没有),那么我会尝试传递:
Base64((二进制IV)+(二进制Enc(消息))
看看CryptoJS文档,我和你一样感到沮丧。但有一个"手动指定IV"的加密示例可能会提供线索。
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<script>
var key = CryptoJS.enc.Hex.parse('000102030405060708090a0b0c0d0e0f');
var iv = CryptoJS.enc.Hex.parse('101112131415161718191a1b1c1d1e1f');
var encrypted = CryptoJS.AES.encrypt("Message", key, { iv: iv });
</script>
对不起,我帮不了你什么-
相关文章:
- TypeError:在不兼容的接收器nodejs上调用了方法Uint8Array.length
- internet explorer 8兼容模式下的Youtube api错误
- CKJustify和Color Button插件之间的不兼容
- 在不兼容的接收器上调用的方法Set.prototype.add未定义
- 如何计算与php中的CRC32函数兼容的arrayBuffer(javascript中的From FileReader)
- 正在寻找一种跨移动浏览器兼容的方式,通过内置麦克风进行录制
- 将对象数组转换为与nodejs/pg/unnest兼容的数组
- 创建web服务“;活动指示器”-与所有浏览器兼容的类似指示符
- qoxdoo中的离线存储是否与所有浏览器和本地文件系统兼容
- 如何创建加号[+]减号[-]切换,以扩展链接列表,并与Opera Mini兼容
- 如果不兼容,则隐藏范围输入
- 一些sencha/enyo风格功能的主干兼容UI/组件库
- 和兼容的单例骨干模型
- 谷歌图表 - 地理图表“不兼容的数据表:错误:未知地址类型
- 角度2:检查用户的浏览器是否兼容
- IE8 兼容模式 - 文档模式
- 在与 IE8 兼容的文档片段中查找数据
- Rails 'nil' 不是与 ActiveModel 兼容的对象.它必须实现:to_partial_path.阿贾克斯
- 使CryptoJS和pycrypto兼容
- 是AES-CTR在CryptoJS与PyCrypto兼容