c++ - 基于 256 位 key 对矩阵进行加扰的方法有哪些?

标签 c++ matrix encryption encoding obfuscation

希望构建一种算法,该算法将基于 256 位 key 对矩阵进行置乱。给定两个 m*n 矩阵 A 和 B 以及 key K,我希望以相同的方式对 A 和 B 进行加扰。所以非正式地,如果 A==B,则 scramble(A,K)==scramble(B,K)。

我正在尝试做的事情似乎与加密有相似之处,但我对这个领域完全不熟悉。我觉得我一定可以从加密算法中利用一些东西来使过程快速且计算高效。

澄清一下,加扰的主要目的是混淆矩阵内容,同时仍然允许进行比较。

最佳答案

听起来您可能需要 Cryptographic hash .将您的矩阵/图像输入其中会为其生成(几乎)唯一的哈希值。这个散列值很方便,因为它的大小不变并且通常比源数据小得多。从散列值返回到原始数据几乎是不可能的,并且再次散列相同的图像数据会产生相同的散列值。

如果你想在其中添加一个 key ,你可以将图像数据和 key 连接起来,然后计算哈希值。使用相同的数据和 key ,您将收到相同的散列值,如果您更改其中任何一个,则散列值也会更改。

(几乎唯一:根据鸽巢原理,将一个大的输入变成较小的哈希值,必须有多个输入生成相同的哈希值。在实践中,这很少被关注)

关于c++ - 基于 256 位 key 对矩阵进行加扰的方法有哪些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52167261/

相关文章:

C++11 智能指针策略

arrays - 如何在 Julia 的矩阵中找到值的位置?

ios - 这个unicode加密会失败吗?

c++ - 是否有一个选项不自动将所有前导下划线 _ 导出到 emscripten 中的函数?

c++ - 在 Darwin/OSX 中以编程方式确定进程信息

c - 为什么将数组分配给矩阵是非法的?

arrays - 如何使用 Swift 从矩阵中获取子矩阵

.net - 使用 Triple DES 解密信息时出现错误数据

c++ - WinRT CryptographicEngine::加密/解密抛出 InvalidArgumentException

c++ - 检测原始 pcm 数据中的声级