首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AES密码和随机IV编码的标准格式

AES密码和随机IV编码的标准格式
EN

Cryptography用户
提问于 2015-08-12 13:26:57
回答 1查看 4.1K关注 0票数 7

据我所知,解密AES-256-CBC加密字符串需要一个秘密密钥(与CBC块大小相同的长度)和一个初始化向量(IV)。由于IV应该是随机的,因此它与加密文本一起以明文分发。

是否有标准或至少“常用”格式来格式化结果?

例如,/usr/bin/openssl似乎连接了"Salted___“+ IV +密码文本,然后base64对所有内容进行编码。这会是一种推荐的方式吗?我想存储加密的文本,但仍然能够用任何PHP/Python/Java库在10年内解密它。

EN

回答 1

Cryptography用户

回答已采纳

发布于 2015-08-12 14:15:40

是否有标准或至少“常用”格式来格式化结果?

PKCS #7 (和CMS是进一步的发展)描述了加密数据的标准格式。虽然它主要用于公钥加密的数据,但它也有对称密钥的选项。但是,由于它所支持的所有特性,它是相当复杂的,因此,除非您能够找到一个为您完成所有编码和解析的库,否则如果您只需要自己使用的格式,您可能希望做一些更简单的事情。

另一种可能非常常用的“格式”是简单地连接IV和加密消息(如果适用的话,还可以连接MAC )。然而,这并不是很容易发现的。

例如,/usr/bin/openssl似乎连接了"Salted___“+ IV +密码文本,然后base64对所有内容进行编码。这会是一种推荐的方式吗?

实际上,OpenSSL中的"Salted___“表示基于密码的加密,后面的值不是用于密码的IV,而是用于从密码派生密钥和IV的salt。如果您直接使用的是密钥,而不是密码,则不应该重用该格式,否则只会造成混淆。

我想存储加密的文本,但仍然能够用任何PHP/Python/Java库在10年内解密它。

除了PKCS #7或CMS之外,我建议只使用普通的ASCII来描述格式、密码和模式,然后连接二进制IV +数据。它会扩展数据,但是空间如果通常很便宜的话,ASCII将永远是可读的。

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

https://crypto.stackexchange.com/questions/27444

复制
相关文章

相似问题

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