0

我正在研究图像加密技术。为了生成密钥,我使用了函数 randint

key1=randint(256,256,[0,255]);

现在我将 key1 保存为 png 图像以用于解密。但是当我在解密阶段阅读它时,key1 的内容发生了巨大变化。大多数值是 255。为什么会发生这种情况以及可能的解决方案是什么? ?

它还会生成一个警告“警告:这是一个过时的功能,将来可能会被删除。请改用 RANDI。要禁用此警告,请键入 warning('off','comm:obsolete:randint')”

4

1 回答 1

1

的输出randi是双倍的,我认为这是导致问题的原因。来自Matlab 帮助

如果 A 是数据类型为 double 或 single 的灰度或 RGB 彩色图像,则 imwrite 假定动态范围为 [0,1] 并在将数据作为 8 位值写入文件之前自动将数据缩放 255。

在这种情况下,最简单的解决方法是将 key1 转换为 uint8key1 = uint8(key1);

于 2013-09-20T08:54:18.757 回答