我的一位教授在课堂上提到,有一种方法可以使用PKCS#7填充使填充在解密后具有持久性。
例如,如果我使用
openssl enc -aes-128-ecb -in input.txt -out encrypted.txt -K 0123456789 -v很明显,我有以下几个方面的区别:
bytes read : 20
bytes written: 32所以增加了12个字节的填充。
文件解密后,我希望填充保持不变。
我能想到的唯一方法是使原始input.txt文件中的字节与PKCS#7使用的字符相同,这样当需要卸载时,它就不知道要卸载什么了。我还没有找到它到底使用了哪个字符,或者它是否不是一个字符。我读过一些关于标准这里和这里的文章,但是没有真正的运气。
我还在读,但我还没有经历过任何“尤里卡”的时刻。
我正在寻找的一个例子是,如果我给它一个4字节文件,如:
AAAA它对它进行了加密,但在末尾添加了12字节的C,我希望解密的文件是:
AAAACCCCCCCCCCCC发布于 2019-09-30 15:42:01
在OpenSSL中有一个-nopad选项。如果不希望OpenSSL删除填充字节,则添加-nopad选项。
openssl enc -d -nopad -aes-128-ecb -in encrypted.txt -K 0123456789 -v -out decrypted.txt请注意,您不能将其视为C,因为OpenSSL不以十六进制打印。
要查看十六进制,可以使用xxd命令
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和纯文本是
123454348743738841414346A注:注:在PKCS#7填充128位分组密码,我们没有看到Cs,但我们有0C, 1C,2C,3C,4C,5C,6C,7C.你提到的是PKCS#5。看PKCS#5填充和PKCS#7填充有什么区别?的区别。
https://crypto.stackexchange.com/questions/74713
复制相似问题