Linux中的字符串加密
请告诉我如何使用命令行工具接收16个字符的字符串并生成16个字符的加密字符串(人类可读格式) 我已经探索过像openssl这样的选项,但我无法控制输出的长度Linux中的字符串加密,linux,encryption,cryptography,Linux,Encryption,Cryptography,请告诉我如何使用命令行工具接收16个字符的字符串并生成16个字符的加密字符串(人类可读格式) 我已经探索过像openssl这样的选项,但我无法控制输出的长度 谁能给点建议吗 在Linux中有ROT13的描述。我没有测试它: $alias rot13=“tr'[A-Za-z]'[N-Za-Mn-Za-m]'” 这可能会满足你的需求,尽管它一点也不安全 echo "abcdefghijklmnop" | gpg --armor -c --output - 但是,这不会突破16个字符的限制 结果输出
谁能给点建议吗 在Linux中有ROT13的描述。我没有测试它:
$alias rot13=“tr'[A-Za-z]'[N-Za-Mn-Za-m]'”
这可能会满足你的需求,尽管它一点也不安全
echo "abcdefghijklmnop" | gpg --armor -c --output -
但是,这不会突破16个字符的限制
结果输出:
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.10 (GNU/Linux)
jA0EAwMCnM6hI0xpVVFgyScCfr6Zo2fZeuiVWteZKeptcvSBj9wxk2gRMqTERtz9
8dNUHZq2eRA=
=Jpku
-----END PGP MESSAGE-----
我不知道这将在哪里使用,您的安全要求的细节是什么,所以我将根据您提供的信息回答。您需要:
- 强加密李>
- 输出必须与输入大小相同李>
- 输出必须是可读的李>
- 使用弱加密(类似ROT13的替代密码——或者,如果您想要更复杂的东西,实现,但您必须对其进行编码——或者信任其他人的实现)李>
- 使用AES或其他一些好的分组密码(如您所述,通过OpenSSL)进行加密,然后在输出上运行base64李>
- 使用AES或其他好的分组密码(通过OpenSSL)进行加密,但不要期望任何人读取输出
[P>(1)一些密码学家不会同意,你可以把哈希函数的输出看作“随机”(你会使用“随机预言模型”)。散列的编码必须确保,给定输入中位的均匀分布,输出中字母的均匀分布。当您将此“pad”与消息组合时,它必须是一对一的映射,因此最终输出的分布是均匀的。它必须有多强?如果你不需要军事级别的加密,那么一个简单的替换密码(由密钥修改)可能会起作用,并且很容易自己实现。谢谢Jim,但是我可以使用任何命令行工具来实现这一点。它不需要非常强的加密。使用超级棒的ROT26工具“cat”。标记为脱离主题:不是编程问题-我想知道使用命令行工具是否可以实现这一点。首先,您必须指定字符编码和范围,以查看它是否可以回答……您可能会发现ROT13内置在某个地方。要想获得更强大的功能,请使用Vigenère。仔细想想,我不相信有任何真正的“加密”可以保证为您提供确切数量的字符作为输出,而您将其作为输入。有一些模糊技术可以确定(如上面提到的rot13),但没有真正的加密。使用相同大小的一次性焊盘,您始终可以生成
strong
加密(nottrue
encryption-rot13绝对正确,但一点也不强)。是的,但是一次性pad需要一个与文本一样长的密码,密码必须随机生成(每个字符的分布是一致的)。如果你实现Vigenere,你也可以实现一些转子机器,比如enigma。这也将提供相同的输出大小。有一些enigma实现可用,但它们不是默认安装的。是的,很好!Enigma也很好——但与一个好的现代分组密码不同。。。