0

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

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

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

4

3 回答 3

3

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

由于您的问题是如何编写的,我怀疑您没有很多关于密码学的知识,在这种情况下,在开始任何类型的实现之前先阅读一些内容可能会更好(例如关于对称/非对称的维基百科文章密码学、流密码、块密码等)。

关于实现,您必须选择一种加密算法。例如,我建议您使用 AES,因为知道他们在说什么的人经常推荐它(例如,在“实用密码学”一书中,如果您对更多细节感兴趣,这也是一本不错的书!)。如果你想这样做,网上有很多例子,或者看看 SO 上的 question like this one

于 2012-05-22T10:17:28.930 回答
1

公钥密码学目前被认为是最省钱的。这是因为在这里您不必通过安全通道传输“共享秘密”。人们只能用公钥加密数据,但需要私钥才能解密。有关更多信息,请参阅有关公钥密码学的 Wikipedia 页面

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

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

一个快速的谷歌搜索显示了这个链接,它应该可以帮助你开始:

于 2012-05-22T10:15:56.340 回答
0

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

于 2012-05-22T10:50:04.750 回答