![]() |
1
2
您的代码没有添加6个字节,3des被四舍五入为一个完整的块大小。这就是分组密码的工作原理。您只能在得到的密文中看到,而不能在解密的明文中看到。 同样,无需担心,块密码必须将明文填充到下一个块大小,然后才能加密明文。解密密文时,填充将被删除。 另外,我做了一个快速的代码检查,代码中有一个错误——您对IV和密钥使用的是同一个密钥,您真的应该使用不同的数据。因此,我将添加另一个arg到decryptfile()、encryptfile()和setkeys(),以允许使用不同的IV。 |
![]() |
2
0
我不知道您使用哪种加密模式,但是ecb和cbc模式在最后一个块的末尾添加了填充位,以将其大小增加到64位。也许这就是你字节的来源? |
![]() |
3
0
tiple des是一个64位的分组密码。在不分析代码的情况下,我猜想您的数据不是64位对齐的,并且已经用 default PKCS7 mode . |
![]() |
4
0
我浏览了一下代码,发现没有问题,但是我对你使用的类不太熟悉,所以我可能错了。相反,我将给出一些适用于 任何 缺陷: 试着找出问题所在。在许多代码行中很难发现错误。创建显示错误行为的尽可能短的代码。 例如,尝试将字符串写入输出流。尺寸正确吗?
这是一种标准的调试技术,非常有用,我建议每次遇到问题时都使用它。 除此之外,尝试始终保持干净的启动条件,即确保写入的文件已被删除。在不同的输入上尝试您的代码,看看它是否每次都会以完全相同的结果失败,或者是否存在差异。 编辑: 根据其他响应,64位块导致了您的问题。有了前面描述的思想,您可以很容易地排除许多其他因素,直到只剩下加密本身。 然后,您可以问“为什么Tripedes会向输入添加多达7个字节?”哪个问题比“我的三重DES包装有什么问题”更清楚??“-你肯定会在不到一分钟的时间内得到这个简单问题的答案! |
![]() |
xchrisbradley · 使用Zig签名对功能选择器进行编码 1 年前 |
![]() |
Shirin Ebadi · 加载公钥字节作为DH密钥 1 年前 |
![]() |
YoavKlein · 为什么jwt.io会给我私钥部分来填充? 1 年前 |
![]() |
birb · RFC-6238 TOTP实现与示例不匹配 1 年前 |
|
Stefan N · 如何生成N个字符的所有字母数字组合[重复] 1 年前 |
|
xdivayze · 在线和离线客户端之间的打包密钥交换 1 年前 |