如何以加密形式显示或查看加密数据?

Posted

技术标签:

【中文标题】如何以加密形式显示或查看加密数据?【英文标题】:Howto display or view encrypted data in encrypted form? 【发布时间】:2010-05-02 21:15:43 【问题描述】:

在Block Cipher Modes 的***文章中,他们有一个简洁的小图表 未加密的图像,使用 ECB 模式加密的同一图像和使用另一种方法加密的同一图像的另一个版本。

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

我想使用我们的实现显示一个与上面所示类似的示例。然而,大多数图像文件都有与之关联的头块,当使用我们的实现加密文件时,它们也会被加密。因此,当您在图像查看器中打开它们时,会假定它们已损坏并且无法查看。

我想知道是否有任何新的简单的无标题图像格式可以用来显示这些?或者如果有人知道上面图片的原始创建者是如何实现上述结果的?

任何帮助将不胜感激,

谢谢

注意:我意识到滚动你自己的密码库是愚蠢的,并且 DES 被认为是坏的,ECB 模式对于任何有用的密码都非常有缺陷,这纯粹是学校的学术练习。所以拜托,不要讲课,我知道演习。

【问题讨论】:

【参考方案1】:

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

【讨论】:

是的,我已经考虑过了。我们用 C++ 开发它,我们真的不应该使用任何外部库。此外,我们的程序应该是加密任何文件的通用目的。不过感谢您的回答。 @Brian,加载和保存 32 位(无调色板)位图文件真的很简单。您不需要 3rd 方库。 听起来您只需要演示文稿的图像文件 - 因此您可以简单地使用修改过的、一次性的加密工具版本来生成它们,对吧? 如果我要这样做,这是我认为最好的答案。【参考方案2】:

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

这对于Netpbm 格式特别容易,因为您只需要知道要切断多少行。数据存储为十进制数字,因此您可能应该在加密时考虑到这一点(首先将它们转换为二进制)。

【讨论】:

这仅适用于某些存储“普通”像素值的图像格式(可能是 BMP、TGA 或 PPM——不是 GIF、PNG、JPEG)——即使这样,也应该考虑多少字节每个像素/行是,以及这与编码器块大小有何关系。否则,结果将毫无意义 @leonboy:没错,当你写评论时,我正在更新我的答案。

以上是关于如何以加密形式显示或查看加密数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何利用PGP构建加密磁盘

如何以加密形式将密码字段存储在 oracle 11g 数据库中?

如何在 Spring 的属性文件中以加密形式存储密码

加密长用户输入以使我无法查看数据库并立即看到每个人的写作的最佳方法是啥?

关于php加密库加密数据上传数据库或解密出错的问题

技术科普丨区块链实现去信任的关键技术:非对称加密