我正在尝试在大小为 256x256(65536 字节)的图像上实现 AES,但 AES 适用于 4x4 大小的图像(16 字节)。
我该怎么办?能不能实现?如果是,那怎么办?
我正在尝试在大小为 256x256(65536 字节)的图像上实现 AES,但 AES 适用于 4x4 大小的图像(16 字节)。
我该怎么办?能不能实现?如果是,那怎么办?
AES 是一种分组密码,它适用于 16 字节(128 位)的分组。AES 本身不能处理小于或大于 16 字节的数据。较小的数据需要填充到 16 字节,较大的数据需要拆分为 16 字节的块(当然,在需要时填充*)
幸运的是,有一些算法可以帮助您实现这一目标(处理大于密码块大小的数据),它们被称为块密码操作模式。他们描述了应该如何使用分组密码进行加密和解密的过程。
重要提示:如果您正在编写自己的 AES 实现来加密实际数据以供个人和/或专业用途,请立即停止!取而代之的是,为此使用经过严格审查、久经考验且著名的库。但是,如果您这样做是出于教育目的,请继续,玩得开心。
如果您想使用 AES 进行保密(即保持图像机密),请使用您的库提供的任何模式,但不安全的 ECB 除外。如果您还想保护图像的完整性(即检测它是否被修改),请使用经过身份验证的加密模式。
* 除了需要达到块大小之外,填充还有更多内容,但我不会深入讨论。如果您有兴趣,请阅读有关它的更多信息。
此处有几种使用AES加密数据的方法。它使用高级库(例如 Bouncy Castle 或 .NET)使用 AES GCM 实现经过身份验证的加密