Java Cryptography - 真的这么难吗?



我最近一直在尝试制作一个应用程序,它允许您加密和解密文本文件,但您也可以传输密钥和文本文件。这只是为了进一步加深我有限的Java知识,但我一生都找不到任何好的指南或教程。

我想做的只是,生成加密密钥,加载texfile,使用密钥加密文件,将密钥保存到单独的文件,通过电子邮件将文件和密钥发送到另一台计算机,加载密钥,加载文本文件,解密文本文件。

这真的需要使用私钥和公钥等吗?我不担心它的安全性,它只是一个实验,任何帮助,指示?

不,您不需要使用私钥/公钥,这将通过非对称加密。我猜你想做的是对称加密,这意味着使用相同的密钥进行加密和解密。

由于您的问题的编写方式,我怀疑您对密码学没有太多了解,在这种情况下,最好在开始任何类型的实现之前先阅读一些内容(例如,关于对称/非对称密码学的维基百科文章,流密码,块密码等(。

关于实现,您必须选择一种加密算法。例如,我建议您使用AES,因为知道自己在说什么的人经常推荐它(例如,在"实用密码学"一书中,如果您对更多详细信息感兴趣,这也是一本不错的读物!如果你想这样做,网上有很多例子,或者只是看看像这个这样的 SO 上的 quesiton。

公钥

加密目前被认为是最省钱的。这是因为在这里您不必通过安全通道传输"共享 seceret"。人们只能使用公钥加密数据,但需要私钥来解密它。请参阅维基百科关于公钥密码学的页面以获取更多信息。

密钥的更容易处理伴随着加密本身的成本。通常,与对称方法相比,公钥算法具有性能劣势。

如果你想避免公钥加密,你可以使用对称算法,例如AES。

快速的谷歌搜索显示了此链接,这应该可以帮助您入门:

  • http://java.sun.com/developer/technicalArticles/Security/AES/AES_v1.html

在评估加密 API 时,请记住一件事:它们的设计将安全性作为首要考虑因素(显然:)。这意味着他们特别注意写入的敏感信息的每个字节。这包括密码和明文。例如,如果框架接受字符串密码,则违反了安全性,因为 Strincg 随后失控,躺在堆上。如果它接受 char 数组,则客户端可以在使用后将数组清零。在这些 API 中会遇到源自相同原理的许多其他示例。

最新更新