众所周知,Hill密码是密码学中的经典密码,主要用于加密文本。我需要加密文件(例如.doc,.ppt,.jpeg等),而不仅仅是文件的内容。我已经在互联网上搜索过,但是我没有找到太多关注文件加密的研究 我发现:加密.txt中的文本内容不会加密.txt文件 使用Java或.Net或Python(选择一个或一些),如何实现Hill Cipher加密文件,如上所述?
作为一个注释,这个问题不适合我的作业或作业。我对如何实现Hill Cipher加密文件感到困惑和好奇。谢谢。
答案 0 :(得分:1)
Hill cipher与计算机前时代的大多数经典密码一样,传统上只用于加密字母:也就是说,有效输入只包含A
到{{C}}的26个字母。 {1}}(并且,在某些变体中,可能还有一些额外的符号使字母大小成为素数)。
也就是说,没有理由不使用Hill密码的变体,例如字母大小为256,允许您直接加密由任意字节组成的输入。
对于一个密钥,你需要一个可逆模256的随机矩阵,即一个由0到255的随机值组成的矩阵,使得它的行列式是一个奇数。生成这样的矩阵的一种简单方法是随机均匀地选择矩阵元素,计算行列式,并且如果它恰好是偶数则重新开始。平均而言,您需要两次尝试才能成功。当然,对于解密,您还需要实际计算逆矩阵。
所有这一切,值得注意的是,Hill密码本身就是very easy到break。事实上,即使是它的发明者Lester S. Hill也意识到这一点,并且只推荐它与替代密码结合使用,我们今天可能会认为它是原始的substitution-permutation network。
当然,现在我们可以使用更高效,更安全的密码,例如AES。对于任何实用加密任务(而不仅仅是学习练习),你应该使用它们而不是试图开发自己的。