首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中实现SJCL .frombits

在python中实现SJCL .frombits
EN

Stack Overflow用户
提问于 2016-08-09 10:10:59
回答 1查看 452关注 0票数 0

我试图用pycrypto在Python中重写一些JS (它使用SJCL库)。我很难搞清楚如何实现以下代码

代码语言:javascript
复制
aes = new sjcl.cipher.aes( this.key );
bits = sjcl.codec.utf8String.toBits( text );
cipher = sjcl.mode.ccm.encrypt( aes, bits, iv );
cipherIV = sjcl.bitArray.concat( iv, cipher );
return sjcl.codec.base64.fromBits( cipherIV );

我的问题不是密码,而是库处理fromBits转换的方式。根据SJCL文档:

我们的大部分密码原语在内部对4字节字数组进行操作,但其中许多可以接受不为4个字节的倍数的参数。这个库将位数组(其大小不必是8位的倍数)编码为32位字的数组。这些位元被打包成一组字,每次32位。由于这些词是双精度浮点数,所以它们符合一些额外的数据.我们使用它(以一种私有的、可能会改变的方式)对数组最后一个字中实际出现的位数进行编码。

在我看来,这似乎意味着向位数组的转换会添加某种附加信息,我担心,在concat操作期间,这些信息将非常普遍。此外,在连接之后,结果将以base64字符串的形式返回。我不确定正确的‘结构’包装参数来复制这一点。

EN

回答 1

Stack Overflow用户

发布于 2016-08-09 19:23:12

如果仔细看一下这段代码,就会发现它是自成体系的。在运行此代码之后,不需要SJCL的"bits“(本机二进制数据表示)。这些内部数据被赋予加密和级联函数,然后将结果转换回一个可移植的“普通”Base64 64编码字符串。

此代码可能存在的唯一问题是this.keyìv的编码。

PyCrypto没有特殊的内部二进制数据编码,因为Python语言已经为我们提供了二进制字符串或bytes (取决于Python版本)。但是,您仍然需要使用Base64编码从字符串中进行编码/解码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38847927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档