当前位置: 首页 > 知识库问答 >
问题:

用公钥解密飞镖/颤振

闻人伟
2023-03-14

我已经在我的服务器上创建了一个RSA密钥对,只有服务器才会有私钥。客户端(Flatter应用程序)将访问公钥。因此,当服务器收到加密消息时,它将知道消息来自正确的客户端,并将使用其私钥解密通过公钥加密的消息。

服务器(php7.3)向客户端发送回复时,我想在服务器端通过私钥加密消息,以便客户端可以用公钥解密消息。

非对称加密有其自身的局限性,如最大字符长度。但如果能送来就好了

Flutter包加密

可能我将不得不使用对称加密。但如果你能提出解决方案,我将不胜感激。

注意:我已经能够通过pointycastle用公钥对消息进行加密,但编写一个用公钥解密数据的函数对我来说非常复杂。

共有1个答案

饶志
2023-03-14

我已经在我的服务器上创建了一个RSA密钥对,只有服务器才会有私钥。客户端(Flatter应用程序)将访问公钥。因此,当服务器收到加密消息时,它将知道消息来自正确的客户端,并将使用其私钥解密通过公钥加密的消息。

一般来说,我们尝试在公钥上不设置任何安全性。如果您想验证您的消息,您应该使用客户端特定的密钥对并用它们生成签名。

此外,通常情况下,您不仅希望对消息保密,还希望确保消息未被篡改(消息真实性附带的完整性)。

当服务器(php7.3)向客户端发送回复时,我想在服务器端通过私钥加密消息,以便客户端可以用公钥解密消息。

您可以使用属于客户机密钥对的公钥来执行此操作。

非对称加密有其自身的局限性,如最大字符长度。但如果能送来就好了

最大位或字节大小,而不是字符长度。但通常我们还是会使用混合加密。

Flutter包加密

这很好,因为使用公钥解密没有意义,您可以使用单独的密钥对。

可能我将不得不使用对称加密。但如果你能提出解决方案,我将不胜感激。

您最好只使用TLS,并将TLS与客户端身份验证一起使用,以实现简单的传输安全性。

如果您需要应用程序级安全性,那么您可以使用容器格式,例如CMS。最好每个实体使用两个密钥对:一个用于加密(面向私钥持有者),另一个用于私钥持有者生成签名(即消息完整性)

注意:我已经能够通过pointycastle用公钥对消息进行加密,但编写一个用公钥解密数据的函数对我来说非常复杂。

好的不要。

 类似资料:
  • 在flutter示例页面中,有一个名为“将数据发送到新屏幕”的项目。我对第65行的构造函数有一个重新保护的问题。

  • 我试图改变从API返回的日期字符串的格式。下面的日期格式输入字符串在java中工作正常,但在Dart中则不行。

  • 我一直在使用VSCode进行颤振开发,但没有问题。今天,飞镖分析器突然抱怨说,大多数类都是未定义的,或者目标不存在。 有人见过这个吗? 我已经重新启动了VSCode,重新启动了计算机,卸载了flutter/dart插件,运行flutter dr没有任何问题……我没有想法了。 VSCode问题

  • [![Plugins installed][1][1]我已经在android studio中安装了这些插件,并将C:\flatter\bin添加到系统环境变量中,但当我在PowerShell中运行flatter doctor时,它显示这些插件没有安装。我用的是Windows操作系统。

  • 我有一个flutter应用程序,我在其中使用SQFLITE插件从SQLite DB中获取数据。这里我面临一个奇怪的问题。根据我的理解,我们使用async/wait或then()函数进行异步编程。这里我有一个db.query()方法,它执行一些SQL查询以从DB中获取数据。在这个函数获取数据后,我们在. then()函数中做一些进一步的处理。然而,在这种方法中,我遇到了一些问题。从我调用getExe