首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于Java加密的几个问题

问关于Java加密的几个问题
EN

Security用户
提问于 2020-01-20 19:44:07
回答 1查看 310关注 0票数 0

我有一些关于java加密的问题,因为我正试图为我在高中(德国)的计算机科学期末考试开发一个类似密码管理器的应用程序。密码管理器使用带有REST的服务器将密码保存在数据库中,以便将加密的密码传输到用户可能保存或只使用密码的地方。

  1. 我必须为浏览器Chrome做一个扩展来插入密码,但是Chrome强制我使用JavaScript编写这个扩展。因此,我应该解密服务器上的密码并通过SSL发送纯文本,还是应该发送加密密码和加密私钥,并让扩展部分对两者进行解密。但是这里的问题是Java和JavaScript Crypto创建它们的方式不同,所以我可能需要从扩展调用一个java应用程序。
  2. 我目前正在使用RSA/ECB/PKCS1Padding作为使用公钥和私钥加密文本的算法,我知道还有AES,但我需要应用程序的公钥/私钥,因此我想问一下这个算法是否足够安全以保存密码。注意:我正在用PBE加密私钥。
  3. 正如我所提到的,我使用PBE来用用户为密码管理器提供的密码加密我的私钥,因此,我使用的是PBEWithSHA1ANdDESede,这是否也足够安全,或者在中有什么更好的。
EN

回答 1

Security用户

回答已采纳

发布于 2020-01-21 00:13:29

在回答你的问题之前,以下是一些能使答案更容易理解的原则。

  1. 将网络使用保持在最低限度。所有传输都是漏洞。您正在使用网络来同步设备之间的密码。所有其他函数都应该在缓存的数据库上本地执行。
  2. 敏感数据应尽可能保持加密。当数据未被使用时,请将其加密。即使在记忆里。明文密码是赤裸裸的目标。它们应该只存在于用户需要它们的短暂时刻。
  3. 隐藏秘密并不是密码学的唯一目标。密码学有四个目标:机密性(隐藏秘密);真实性(验证人们所说的自己是谁,以及他们说自己来自何处);完整性(验证数据没有被破坏);以及不可否认性(暂时不要担心这个问题)。

现在请

回答您的问题.

1.问题

我是应该解密服务器上的密码并通过SSL发送纯文本,还是应该发送加密的密码和加密的私钥,并让扩展部分对两者进行解密。

本地应用程序应该对两者进行解密。记住,我们只使用网络来同步设备之间的数据。其他的一切都应该在当地完成。

用户的全部密码档案应该缓存在他们的本地设备上。它们由用户的密码(以及密钥或其他任何东西)加密存储。当用户登录到密码管理器应用程序时,他会给应用程序他的密码和/或密钥。这使密码管理器应用程序能够解密数据库并读取用户的密码。

基本上,答案是您确实需要解密JavaScript中的密码。但是,除非本地缓存需要更新,否则不应该从服务器获取它们。

这里的问题是Java和JavaScript Crypto创建它们的方式不一样,所以我可能需要从扩展调用一个java应用程序。

不,您不需要从JavaScript调用Java应用程序。您所使用的密码标准是完全可互操作的。如果你不能让他们一起工作,那么你可能犯了一个错误。

2.问题

我目前正在使用RSA/ECB/PKCS1Padd作为使用公钥和私钥加密文本的算法,我知道还有AES,但是我需要应用程序的公钥/私钥,因此我想问这个算法是否足够安全以保存密码。

您需要了解的第一件事是,您可能仍在使用AES加密。对称加密是非对称加密的重要组成部分。RSA密钥不能加密超过几百字节。这是基本程序。

加密

  • 生成对称密钥A
  • 使用A加密消息M
  • 使用公共RSA密钥加密A
  • 将A+M (两种加密)发送给收件人

解密

  • 使用私密RSA密钥解密A。
  • 用A解密M

另外,你关于RSA是否足够强的问题是不可能回答的。这取决于你老师的标准。

3.问题

Java标准库中有什么更好的吗?

是。我不知道什么东西对你的老师来说足够强大。但是Java当然有更强的选择。

SHA1是所有SHAs中最弱的。所有SHAs中最强的是SHA3-512。加入HMAC会让它变得更强大。AES也比DES强得多。PBE有点模糊。如果我需要非常强大的东西,我通常更喜欢指定PBKDF2。

票数 3
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/224523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档