- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
动态搜索广告和自适应搜索广告
不在于谁强。
我一直在互联网上研究这个主题,下面是我得到的信息摘要。能否请您告知是否正确,以及是否还有其他重要问题我没有在这里提及。
这里我只讨论 DSA 和 RSA 在 Java 上的应用。我的主要目标 - 使用公钥算法将 session key (AES) 从客户端发送到服务器,然后检查客户端的真实性。
动态搜索广告。
1.在 Java 中,您应该使用私钥加密文件。
2.这意味着它是一个签名——任何拥有公钥的人都可以阅读它,但只有所有者才能签名。
3.如果您尝试将公钥用作私钥,反之亦然,您会遇到麻烦,因为通过私钥猜测公钥并不难。
4.您实际上不能使用 DSA 发送 session key ,因为每个人都可以解密它。
RSA。
1.在 Java 中,您应该使用公钥加密文件。
2.这意味着这是将 secret 消息传递给特定收件人的最佳方式。签名后,除所有者外,任何人都无法阅读。
3.如果你尝试相互切换 key 会带来麻烦(同上)
4.您可以有效地为客户端使用 RSA 发送使用服务器的公开 key 加密的 session key ,然后从使用客户端的公开 key 签名的服务器接收确认。
基于此,我决定将 RSA 用于我的目的。
AES256 与 AES128
另一个不相关的问题 - 您认为对于没有任何极其敏感数据的 session 加密,使用 AES256 是否有意义?
我愿意,但它会给最终用户带来问题。我知道安装允许 256 位 key 的 Java 更新非常容易,但可悲的事实是,即使是这样简单的事情也会将潜在用户群减少一半。
另一方面 - 如果我不发送敏感信息(如信用卡号)并且每个 key 的使用时间不超过几天,也许 AES128 就足够了吗?
显然,我将为那些不介意安装更新的用户提供使用 AES256 的选项。
感谢任何评论!
最佳答案
如您所知,DSA 只是一种签名算法,不是加密算法,因此不适合 key 交换。
如果你有在线连接(而不仅仅是从一个点到另一个点的传输),你可以使用 Diffie-Hellman(它基于类似 DSA 的想法),并在签名模式下使用 DSA 或 RSA 来验证对方避免中间人攻击。
除此之外,RSA key 交换也很常见(即发送使用服务器的 RSA key 加密的 key AES key )。
对于 AES 变体,AES-128 应该在任何时候都是安全的(即暴力破解所花的时间应该比你活的时间还长)。只有一个更大的 key 变体,因为美国军方希望对不同的东西使用不同级别的安全性。 (而且,AES-256 最近显示出一些 AES-128 中没有的(理论上的)弱点,这可能意味着 AES-128 实际上更安全。)
但正如 Kerrek 评论的那样,不要尝试发明自己的协议(protocol),使用现有协议(protocol)。你会犯其他人以前犯过的所有错误,并添加新的错误。 (如果你愿意,你可以自己实现这些协议(protocol),但重用现有的实现通常也更容易和更安全——即使使用安全协议(protocol),也有很多事情会出错,比如使用错误的随机数。)
对于在线(双向)通信,SSL(或者现在更好的它的后继者 TLS)是必经之路。在 Java 中,它作为 SSLEngine
可用。类(如果你想使用异步 I/O),或使用 SSL(Server)SocketFactory
(用于普通套接字读/写)。我将其用于小程序/服务器通信(用于我的项目 fencing-game )。
对于离线(单向)通信(如电子邮件)或存储,请使用 PGP 数据格式(也可以使用 RSA 和 AES)。 (不过,我不知道现有的 Java 实现。)
关于java - Java 中的 DSA 与 RSA 和 AES128 与 AES256 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9368620/
我目前正在使用 Crypto++ 为数据块生成签名。我希望签名是 20 个字节(SHA 1 Hash),因为我的理解是签名只是一个加密的哈希。但是当检查 maxsignaturelength 和 si
我不是加密专家,所以我对这些事情的了解接近于零。我必须与使用 RSA 加密的系统进行互操作。使用他们的 key 时,我遇到了为相同的输入/ key 获取不同密码的问题。图书馆是https://code
我想利用 postman 来测试需要使用 RSA 加密对输入字段之一进行加密的 REST API。 我看到 postman 通过 require('crypto-js') 提供了功能使用 AES 加密
我正在尝试在我的 (Java) 应用程序中实现一个(简化的)类似 RSA 的验证过程。客户端发送一个请求(数据+私钥签名),服务器要么拒绝他的请求,要么处理它——取决于签名的有效性。 但是我不明白验证
我正在尝试在我的 (Java) 应用程序中实现一个(简化的)类似 RSA 的验证过程。客户端发送一个请求(数据+私钥签名),服务器要么拒绝他的请求,要么处理它——取决于签名的有效性。 但是我不明白验证
下面是我想要做的最小、完整且可验证的示例。 基本上我想实现一个集成一些 CUDA 代码的 OpenSSL RSA 引擎。 CUDA 部分应该执行模幂运算,但在本例中并不重要,因此我只是按顺序使用了 B
是否有任何非常简单的跨平台 C++ 库可以进行不对称加密?不需要高效,只要工作。我想它可能只是 .h 文件中的 3-4 个函数,它们可以执行任意精度的数学运算,仅此而已。 我相信在这里使用 OpenS
我使用以下命令创建了私钥和公钥, openssl genrsa -out privatekey.pem 1024 openssl req -new -x509 -key privatekey.pem
我在 .net 环境(所有版本)中工作并使用 vb.net。我想根据密码生成 RSA 公钥和私钥。 我对 RSA 算法的理解仅限于使用 .net 提供的类,即 System.Security.Cryp
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我有 ssh-keygen 生成的 id_rsa.pub key 。 如何以编程方式将 id_rsa.pub 文件转换为 RSA DER 格式的 key ? 最佳答案 如果使用 ssh-keygen
我在 JWT(JSON Web Token)方案的帮助下实现了一个登录系统。基本上,在用户登录/登录后,服务器对 JWT 进行签名并将其传递给客户端。 然后客户端在每个请求中返回 token ,服务器
我使用的是 WAS 6.1,我的服务器过去可以正常启动,但突然间无法正常工作.. 当我尝试在我的本地 RSA 中启动我的服务器时。我收到以下错误 我已经重新启动了系统,RSA,杀死了所有 Java 进
我正在开发一个支付网关,他们有一个正在运行的 Java 演示,但我想用 php 来实现它。 支付网关使用 3DES 和随机生成的 key 来加密有效负载。该 key 使用支付网关的公钥通过 RSA 进
这是此处未回答问题的副本:Using an RSA Public Key to decrypt a string that was encrypted using RSA Private Key 您可
我一直无法将 RSA 加密字节编码为字符串,然后在另一端(远程主机)将它们恢复为字节,另一端抛出“错误数据”异常。 我试过谷歌,没有运气。 到目前为止我的代码: 客户: array^Test=Enco
我需要一些帮助来解决我的问题。 问题:我想用 Android 平台的公共(public) RSA key 加密一个数字 (A),然后用私钥在 PHP 服务器上解密它。在每个平台上,我都可以加密和解密数
当我尝试将参数传递给函数时出现以下错误。 error[E0243]: wrong number of type arguments: expected 1, found 0 --> src/mai
我尝试将公共(public) RSA key 加载到我的程序中。我在 C 中使用 openssl 库。 key 在 header crypt.h 文件中定义: #define PUBLIC_KEY
Bouncy CaSTLe 加密库中有两种不同的密码可以传递给 PKCS1Encoding:NativeRSAEngine 和 RSAEngine。这两个变体之间有区别吗? 编辑: 正如 Maarte
我是一名优秀的程序员,十分优秀!