Java 如何使用给定的数据同时生成公钥和私钥?
我是一名大学生,有一个任务要做的安全要求“不存储在服务器上的全部秘密,但仍然能够验证”。我的方案是在客户端制作RSA密钥对,将公钥存储在服务器上,然后丢弃私钥。当需要身份验证时,服务器将使用存储的私钥对某些字符串进行加密,让客户端再次生成相同的密钥,并使用密钥对其进行解密,然后发送回服务器 (可能)解释如下 某些数据--处理-->RSA-1024(或更好)私钥+公钥Java 如何使用给定的数据同时生成公钥和私钥?,java,php,android,authentication,rsa,Java,Php,Android,Authentication,Rsa,我是一名大学生,有一个任务要做的安全要求“不存储在服务器上的全部秘密,但仍然能够验证”。我的方案是在客户端制作RSA密钥对,将公钥存储在服务器上,然后丢弃私钥。当需要身份验证时,服务器将使用存储的私钥对某些字符串进行加密,让客户端再次生成相同的密钥,并使用密钥对其进行解密,然后发送回服务器 (可能)解释如下 某些数据--处理-->RSA-1024(或更好)私钥+公钥 私钥必须生成,并且每次都是相同的 公钥必须存储在服务器上,并与给定的私钥兼容 问题在于处理,我想让客户端在每次我想要的时候生成
- 私钥必须生成,并且每次都是相同的
- 公钥必须存储在服务器上,并与给定的私钥兼容
非常感谢您的阅读,如果此线程中有任何错误,请道歉。我是新来的,但这次我很确定这个线程没有重复 公钥加密不是这样工作的。您使用公钥编码,使用私钥解码,反之亦然。如果你把其中一个扔掉,那就没用了。如果你想问一些关于密码系统设计的问题,crypto.stackexchange.com会是一个更好的地方。当你有需要帮助的实际代码,而不是设计问题时,来这里;就像这样。实际上,你不应该用私钥加密,因为你很有可能会让你的私钥易受攻击。您可能的意思是,用户键入一个密码,该密码用于种子CSPRNG,然后用于动态生成RSA密钥对。客户端在注册帐户时会将公钥发送到服务器。在登录时,客户端可以重新生成RSA私钥,并签署类似于当前时间的内容。服务器可以使用存储的公钥来验证当前时间。这是可以做到的(需要做大量工作),但我不认为这比通过哈希(PBKDF2、bcrypt、scrypt或Argon2)使用适当的身份验证更好。