您现在的位置是:网站首页>文章详情文章详情
JS加密中的单词数组WordArray与Python交互问题
inlike2022-07-26【
原创文章
】
浏览(1397)
评论(0)
喜欢(6)
简介如何快速将JavaScript中加密中的WordArray数据类型转为,Python加密库中需要的各种参数?
什么是WordArray
在加密库CryptoJS中经常遇到WordArray类型的数据,也称作单词数组,他是单词的字节值放在最高有效位中的一种数据格式(有待商议,参考)。
JavaScript中操作WordArray
初始化
var wordArray = CryptoJS.lib.WordArray.create();//创建一个空的 WordArray对象
var wordArray = CryptoJS.lib.WordArray.random(128 / 8);//随机生成指定长度的WordArray对象
WordArray 对象 —>16进制字符串
var string = wordArray.toString();//默认得到16进制字符串
var string = wordArray.toString(CryptoJS.enc.Utf8);//指定utf-8字符串
16进制字符串 —>WordArray对象
var wordArray = CryptoJS.enc.Hex.parse(hexString);
WordArray对象—>utf8字符串
var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);
//等价于2.2中
wordArray.toString(CryptoJS.enc.Utf8);
utf8字符串—>WordArray对象
var wordArray = CryptoJS.enc.Utf8.parse(utf8String);
WordArray对象—>Base64字符串
var base64String = CryptoJS.enc.Base64.stringify(wordArray);
Base64字符串—>WordArray对象
var wordArray = CryptoJS.enc.Base64.parse(base64String);
JavaScript中WordArray与Python交互
有些时候在JavaScript只能看到WordArray类型的数据,比如一些key、iv等参数,没有明文数据,如果直接使用toString获得的是数据的16进制字符串,并非密钥或者偏移量的utf-8字符串,是不可以直接相互使用的。如果要在Python中直接使用js中的16进制字符串,那么需要将其转化为bytes类型。可以使用下面两个方法:
import binascii
binascii.unhexlify('b1700a96d03d65c90abb7748b2a4b650')
Out[19]: b'\xb1p\n\x96\xd0=e\xc9\n\xbbwH\xb2\xa4\xb6P'
bytes.fromhex('b1700a96d03d65c90abb7748b2a4b650')
Out[20]: b'\xb1p\n\x96\xd0=e\xc9\n\xbbwH\xb2\xa4\xb6P'
当然,如果想把bytes类型转化为16进制字符串,也可以用下面两个方法:
import binascii
bytes.hex(b'\xb1p\n\x96\xd0=e\xc9\n\xbbwH\xb2\xa4\xb6P')
Out[26]: 'b1700a96d03d65c90abb7748b2a4b650'
binascii.hexlify(b'\xb1p\n\x96\xd0=e\xc9\n\xbbwH\xb2\xa4\xb6P')
Out[27]: b'b1700a96d03d65c90abb7748b2a4b650'
标签
相关文章
本栏推荐

标签云
猜你喜欢
站点信息
- 建站时间:2019-5-24
- 网站程序:like in love
- 主题模板:《今夕何夕》
- 文章统计:104条
- 文章评论:***条
- 微信公众号:扫描二维码,关注我们
