我最近一直在尝试创建一个允许您加密和解密文本文件的应用程序,但您也可以传输密钥和文本文件。 这只是为了进一步提高我的Java知识水平,但我找不到任何好的指南或教程。
我想做的就是,生成加密密钥,加载tex文件,用密钥加密文件,将密钥保存到单独的文件,将文件和电子邮件发送到另一台机器,加载密钥,加载文本文件,解密文本文件。
这真的需要使用私钥和公钥等吗?我不担心它的安全性,它只是一个实验,任何帮助,指针?
答案 0 :(得分:3)
不,您不需要使用私钥/公钥,这可能是非对称加密。 我猜你要做的是对称加密,这意味着相同的密钥用于加密和解密。
由于你的问题是如何写的,我怀疑你没有很多关于密码学的知识,在这种情况下你可能会更好,在开始任何类型的实现之前你做一些阅读(例如维基百科文章关于对称/非对称加密,流加密,阻塞加密等。)
关于实施,您必须选择加密算法。我建议你使用AES,因为它经常被那些知道他们在说什么的人推荐(例如在“实用密码学”一书中,如果你对更多细节感兴趣,这本书也是一本很好的读物!)。 如果你想这样做的话,网上有很多例子,或者只看问题就像this one一样。
答案 1 :(得分:1)
公钥加密目前被认为是最新的。这是因为在这里您不必通过安全通道传输“共享的seceret”。人们只能使用公钥加密数据,但需要使用私钥对其进行解密。有关进一步的信息,请参阅Wikipedia page on Public-Key-Cryptography。
更容易处理密钥需要加密本身的成本。通常,与对称方法相比,公钥算法具有性能劣势。
如果您想避免使用公钥加密,可以使用symetric algroithms,例如AES。
快速谷歌搜索显示此链接,这应该可以帮助您入门:
答案 2 :(得分:0)
在评估加密API时要记住一件事:它们的设计以安全性为主要关注点(显然:)。这意味着他们会特别关注所写的敏感信息的每个字节。这包括密码和明文。例如,如果一个框架接受一个String密码,那就违反了安全性,因为Strincg失控,就在堆上。如果它接受char数组,则客户端可以在使用后清零数组。在这些API中将遇到源自相同原理的许多其他示例。