Encryption AES填充歧义

Encryption AES填充歧义,encryption,aes,padding,encryption-symmetric,Encryption,Aes,Padding,Encryption Symmetric,我一直在用C实现AES,现在通过实现padding来完成这个程序。阅读了大量关于填充主题的其他SO问题,我发现一种流行的方法是用剩余的位置数填充该州剩余的每个位置。例如,如果我只有12个字节要加密,我会用4填充剩余的4个字节。我的问题是,当解密一个已满但以1结尾的块时,我如何知道这是一个字节的填充还是仅仅是值1 免责声明:我知道这个程序不应该在生产中使用,因为它可能有各种不同的不安全性。我这样做是为了好玩,不是为了加密绝密文件。您所描述的是 为了消除歧义,您始终需要使用填充。此外,ECB或CBC

我一直在用C实现AES,现在通过实现padding来完成这个程序。阅读了大量关于填充主题的其他SO问题,我发现一种流行的方法是用剩余的位置数填充该州剩余的每个位置。例如,如果我只有12个字节要加密,我会用4填充剩余的4个字节。我的问题是,当解密一个已满但以1结尾的块时,我如何知道这是一个字节的填充还是仅仅是值1


免责声明:我知道这个程序不应该在生产中使用,因为它可能有各种不同的不安全性。我这样做是为了好玩,不是为了加密绝密文件。

您所描述的是

为了消除歧义,您始终需要使用填充。此外,ECB或CBC模式等模式的明文需要是块大小的倍数


将这两个约束放在一起可以得到一个简单的解决方案:始终将填充添加到块大小的下一个倍数。如果明文已经是块大小的倍数,则添加一个完整的填充块,其中每个字节表示16(对于AES)。

您所描述的是块大小

为了消除歧义,您始终需要使用填充。此外,ECB或CBC模式等模式的明文需要是块大小的倍数


将这两个约束放在一起可以得到一个简单的解决方案:始终将填充添加到块大小的下一个倍数。如果明文已经是块大小的倍数,那么您可以添加一个完整的填充块,每个字节代表16(对于AES)。

如果您想查看我的代码,它就在这里:如果您想查看我的代码,它就在这里:谢谢,出于某种原因我没有看到页面的那部分谢谢,出于某种原因我没有看到页面的那部分