首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenSSL:如何维护解密后的加密填充?

OpenSSL:如何维护解密后的加密填充?
EN

Cryptography用户
提问于 2019-09-30 14:53:04
回答 1查看 4.1K关注 0票数 1

我的一位教授在课堂上提到,有一种方法可以使用PKCS#7填充使填充在解密后具有持久性。

例如,如果我使用

代码语言:javascript
复制
openssl enc -aes-128-ecb -in input.txt -out encrypted.txt -K 0123456789 -v

很明显,我有以下几个方面的区别:

代码语言:javascript
复制
bytes read   :       20
bytes written:       32

所以增加了12个字节的填充。

文件解密后,我希望填充保持不变。

我能想到的唯一方法是使原始input.txt文件中的字节与PKCS#7使用的字符相同,这样当需要卸载时,它就不知道要卸载什么了。我还没有找到它到底使用了哪个字符,或者它是否不是一个字符。我读过一些关于标准这里这里的文章,但是没有真正的运气。

我还在读,但我还没有经历过任何“尤里卡”的时刻。

我正在寻找的一个例子是,如果我给它一个4字节文件,如:

代码语言:javascript
复制
AAAA

它对它进行了加密,但在末尾添加了12字节的C,我希望解密的文件是:

代码语言:javascript
复制
AAAACCCCCCCCCCCC
EN

回答 1

Cryptography用户

回答已采纳

发布于 2019-09-30 15:42:01

在OpenSSL中有一个-nopad选项。如果不希望OpenSSL删除填充字节,则添加-nopad选项。

代码语言:javascript
复制
openssl enc -d  -nopad -aes-128-ecb -in  encrypted.txt -K 0123456789 -v -out decrypted.txt

请注意,您不能将其视为C,因为OpenSSL不以十六进制打印。

要查看十六进制,可以使用xxd命令

代码语言:javascript
复制
 xxd -r decrypted.txt

00000000: 3132 3334 3534 3334 3837 3433 3733 3838  1234543487437388
00000010: 3431 3431 3433 3436 410a 0606 0606 0606  41414346A.......

看,6 06和纯文本是

代码语言:javascript
复制
123454348743738841414346A

注:注:在PKCS#7填充128位分组密码,我们没有看到Cs,但我们有0C, 1C,2C,3C,4C,5C,6C,7C.你提到的是PKCS#5。看PKCS#5填充和PKCS#7填充有什么区别?的区别。

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

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

复制
相关文章

相似问题

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