包含任意位数的字节对象

问题描述 投票:2回答:1

我目前正在实现一个平台,以比较Python3中不同密码算法的执行时间。该平台的要求之一是使用NESSIE project中提供的测试向量。在检查测试向量时,我意识到有一些向量,例如

Set 2, vector#  3:
message=3 zero bits
hash=88BAD9D59A0A5195FAF7961BB6625486816C1430

此测试向量需要输入3个零位,即'000',这会引起问题,我正在使用Cryptography的库实现SHA-1函数,该函数只接受[数据类型。

我一直在阅读Python文档,但我找不到一种只生成3位的字节对象的方法,我只能使用8,16等位来创建它们。我知道这是字节的正确结构,但是,

是否有创建或切片字节对象的方式,使其仅包含3位?

如果无法执行此操作,您是否知道另一个可以执行这些情况的密码库? (我不允许自己实现。)
python cryptography byte bit sha1
1个回答
0
投票
不,您不能切片字节。像所有现代系统一样,假定一个字节为八位字节,则一个字节由8位组成。当然,有一种方法可以表示3位,例如使用特殊的数据结构或通过简单地添加一个整数来指定要使用的位数。

但是,如果您没有用例需要以位为导向的实现,那么您可以忽略位不是8的整数倍的测试向量。即使算法是按位指定的,大多数库还是面向字节的。您

可以根据规范创建一个面向位的文件,因此测试矢量必须存在,以备不时之需。

[遗憾的是,即使从例如符合FIPS的库。
© www.soinside.com 2019 - 2024. All rights reserved.