我有一些关于java加密的问题,因为我正试图为我在高中(德国)的计算机科学期末考试开发一个类似密码管理器的应用程序。密码管理器使用带有REST的服务器将密码保存在数据库中,以便将加密的密码传输到用户可能保存或只使用密码的地方。
RSA/ECB/PKCS1Padding作为使用公钥和私钥加密文本的算法,我知道还有AES,但我需要应用程序的公钥/私钥,因此我想问一下这个算法是否足够安全以保存密码。注意:我正在用PBE加密私钥。PBEWithSHA1ANdDESede,这是否也足够安全,或者在中有什么更好的。发布于 2020-01-21 00:13:29
在回答你的问题之前,以下是一些能使答案更容易理解的原则。
现在请
我是应该解密服务器上的密码并通过SSL发送纯文本,还是应该发送加密的密码和加密的私钥,并让扩展部分对两者进行解密。
本地应用程序应该对两者进行解密。记住,我们只使用网络来同步设备之间的数据。其他的一切都应该在当地完成。
用户的全部密码档案应该缓存在他们的本地设备上。它们由用户的密码(以及密钥或其他任何东西)加密存储。当用户登录到密码管理器应用程序时,他会给应用程序他的密码和/或密钥。这使密码管理器应用程序能够解密数据库并读取用户的密码。
基本上,答案是您确实需要解密JavaScript中的密码。但是,除非本地缓存需要更新,否则不应该从服务器获取它们。
这里的问题是Java和JavaScript Crypto创建它们的方式不一样,所以我可能需要从扩展调用一个java应用程序。
不,您不需要从JavaScript调用Java应用程序。您所使用的密码标准是完全可互操作的。如果你不能让他们一起工作,那么你可能犯了一个错误。
我目前正在使用RSA/ECB/PKCS1Padd作为使用公钥和私钥加密文本的算法,我知道还有AES,但是我需要应用程序的公钥/私钥,因此我想问这个算法是否足够安全以保存密码。
您需要了解的第一件事是,您可能仍在使用AES加密。对称加密是非对称加密的重要组成部分。RSA密钥不能加密超过几百字节。这是基本程序。
加密
解密
另外,你关于RSA是否足够强的问题是不可能回答的。这取决于你老师的标准。
Java标准库中有什么更好的吗?
是。我不知道什么东西对你的老师来说足够强大。但是Java当然有更强的选择。
SHA1是所有SHAs中最弱的。所有SHAs中最强的是SHA3-512。加入HMAC会让它变得更强大。AES也比DES强得多。PBE有点模糊。如果我需要非常强大的东西,我通常更喜欢指定PBKDF2。
https://security.stackexchange.com/questions/224523
复制相似问题