DER编码的ASN.1序列化和反序列化
项目描述
Bran提供ASN.1序列化和反序列化的转换器,以及DER-编码。
目的是为原生Python类型提供序列化格式,例如嵌套字典,其序列化是明确的且稳定的。也就是说,具有相同内容的两个值序列化成相同的字节字符串。
这使得创建哈希和MAC以验证消息完整性成为可能。
请注意,这并不使这个包成为ASN.1规范的完整实现。这不是目标。目标是只拥有Python值的稳定字节表示;特别是选择DER仅仅是因为它有助于此。
用法
代码
您只需编码一些值。在大多数情况下,您希望使用DERTranscoder类。
test = { 'some': { 'nested': 42, 'value': (0, 1, False) } }
from bran import DERTranscoder
transcoder = DERTranscoder()
encoded = transcoder.encode(test)
decoded = transcoder.decode(encoded)
assert decoded == test
为了让分心(bran)库如此易于使用,做出了一些假设。其中影响最大的是假设任何collections.Mapping都将被编码为相同的字节表示,这意味着在解码后将成为Python的dict。对collections.Set和collections.Sequence也有类似的假设。
为了散列的目的,考虑以下代码
from bran.hash import hasher
test = { 'some': { 'nested': 42, 'value': (0, 1, False) } }
h = hasher()
h.update(test)
print(h.hexdigest()) # yields SHA512 hash of the DER serialized test
import hashlib
h = hasher(hashfunc = hashlib.md5)
h.update(test)
print(h.hexdigest()) # yields MD5 hash of the DER serialized test
贡献
有关详细信息,请参阅CONTRIBUTING.md。
许可证
在MITNFA(MIT +no-false-attribs)许可下发布。有关详细信息,请参阅LICENSE.txt文件。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分布
bran-0.4.0.tar.gz (19.6 kB 查看哈希)
构建分布
bran-0.4.0-py2.py3-none-any.whl (7.5 kB 查看哈希)
关闭
bran-0.4.0.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 17086b1339ae7e58771b7fd2407f053e97299a7c0357992cc383b5c7748e2dc3 |
|
MD5 | 870b53efdf760a8fc47b760a6e6e8fb3 |
|
BLAKE2b-256 | 8ea91c9801925c1516b089463381a7db9bada5b021aec0da49366532b730efbd |
关闭
bran-0.4.0-py2.py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 24420bfc0282451f9916cb3dce2880cad7a1643f0646b015499e429e59dc2c3f |
|
MD5 | 52722a2b2ea45f60deb05d92e0a3aee7 |
|
BLAKE2b-256 | d0733739af5af55f9e27b612aa8eb678421c1bb19d2daa1984c6330a6717f1f8 |