2010-05-02 59 views
5

在维基百科有关Block Cipher Modes的文章中,他们有一张 未加密图像的简洁图,使用ECB模式加密的同一图像以及使用另一种方法加密的相同图像的另一版本。如何以加密形式显示或查看加密数据?

UnencryptedECB ModeCBC Mode

在大学里我已经开发了我自己的实现DES(you can find it here)的,我们必须演示我们在演示中实现。

我想展示一个类似的例子,如上所示使用我们的实现。然而,大多数图像文件都有与之关联的头文件块,在使用我们的实现对文件进行加密时,也会对其进行加密。因此,当您在图像查看器中打开它们时,它们会被认为已损坏,无法查看。

我想知道是否有人有新的简单的无标题图像格式,我们可以用它来显示这些?或者,如果有人对上述图像的原始创作者如何达到上述结果有任何想法?

任何帮助,将不胜感激,

感谢

注:我知道滚动你自己的加密库是愚蠢的,而DES被认为是打破了,ECB模式为任何有用的密码非常有缺陷的,这是纯粹是学校的学术运动。所以,请不要听课,我知道演习。

回答

3

如果您使用的是Java,python等高级语言,您可以做的一件事就是加载图像并将像素数据读入内存中的数组。然后对这些原始字节执行加密,然后在完成后保存图像。让所有的头文件数据由您使用的任何语言的库处理。换句话说,不要将该文件视为原始字节序列。希望有所帮助。

+0

+1我打算提出同样的事情。 – 2010-05-02 21:37:41

+0

是的,我考虑过这个。我们用C++开发它,我们真的不应该使用任何外部库。此外,我们的程序应该是通用的加密任何文件。但感谢您的答案。 – 2010-05-02 21:38:40

+0

@Brian,加载并保存32位(无调色板)位图文件非常简单。你不需要第三方库。 – 2010-05-02 21:43:59

3

只需在加密之前切断标题(将它们保存在某处)即可。然后只加密其余部分。然后在结果前添加标题。

这对于Netpbm格式尤其容易,因为您只需知道需要切断多少行。数据以十进制数字形式存储,因此在加密时应将其考虑在内(先将其转换为二进制数据)。

+0

这只适用于存储“普通”像素值(可能是BMP,TGA或PPM - 不是GIF,PNG,JPEG)的某些图像格式 - 即便如此,应该考虑每个像素/行有多少字节,以及这与编码器块大小有什么关系。否则,结果将是毫无意义的 – leonbloy 2010-05-02 21:41:52

+0

@leonboy:是的,我在更新我的答案,而你写评论。 – 2010-05-02 21:43:22