问题标签 [encryption-asymmetric]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 在 Java 中使用对称加密保护磁盘上的私钥
我有一个分布式应用程序,它从中央服务器轮询命令,这些命令的内容由私钥“签名”,公钥与每个远程站点的应用程序一起部署。每个命令都使用私钥签名,并且在执行命令之前验证该签名。
这是我在 java 中生成公钥/私钥对的方法。(我意识到,我们应该做的不仅仅是 1024)
新的要求是,除了发送简单的相对安全的命令外,我们现在还想发送命令来指示我们的软件下载并执行安装程序以自我更新。如果没有正确完成,这有可能会打开一个大洞。“执行更新安装程序”命令将像往常一样被签名,并且还将包括将下载并运行的可执行文件的 md5。因此,命令上的签名必须正确(并且将包括 md5),然后在下载文件上计算出的 md5 需要正确,然后才会执行。这应该可以解决我能想到的大多数攻击向量。还有其他我应该关心的吗?
因此,现在我将注意力集中在保护这些命令源自的服务器上的私钥上。如果获得了该私钥,则游戏结束。我应该如何保护磁盘上的密钥?
我的想法是使用带有密码的对称加密来保护该私钥。
我目前的解决方案如下:
(为清楚起见,删除了例外)
这基本上是随机生成一个盐,使用密码来提供密钥,然后将生成的盐、IV 和密文存储在一个文件中以供解密。
但是,我觉得这里缺少一些东西。就像我还应该以某种方式在密钥上包含某种类型的 MAC,以便我知道我得到了有效的描述?也许只是将 5 或 6 个字节的已知文本放在私钥之前很简单?现在一个错误的密码短语只会导致错误的填充异常,但我读到这可能并非总是如此,一些错误的密码短语会解码并导致垃圾邮件。我觉得我需要警惕这一点。
有人可以让我知道我是否在正确的轨道上并提供一些反馈。重要的是我要尽可能安全..
c# - RSA C# 中的密钥大小没有改变!
我正在生成密钥对并将它们存储在 xml 文件中
我需要根据 MSDN 将密钥大小设置为 2048 唯一的地方是来自 RSACryptoServiceProvider 的构造函数
当我使用检查密钥大小时
我总是得到1024,所以这里有什么问题??
security - 如何在企业软件的密钥容器中管理非对称密钥?
您好,我有一个教育软件,应该安装在整个企业的不同 PC 上。我的程序使用 5000 个文本、xml、html 文件作为其内容的来源。我不希望我的来源被篡改、复制或非法使用。我打算做的是单独加密我的源,然后将加密的文件放在我的应用程序内的一个文件夹中,以便以后我的应用程序可以读取和解密用户请求的每个文件。该应用程序将在任何地方安装和使用。但问题是,要在我的应用程序中保护和存储加密密钥,我必须使用密钥容器,而据我所知(如果我错了,请纠正我)它们是基于机器的,不能用于不同的机器,而我需要为任何 PC 上的所有已安装副本修复我的密钥。
任何想法?
java - 如何在 Java 中创建和使用加密的属性文件?
我想创建一个加密的属性文件,用于存储与许可证相关的信息和其他一些高度敏感的数据。
我在创建加密属性文件期间的要求
- 一旦创建,不应该是可重写的。
- 一旦创建,没有人应该能够读取加密数据。
创建后,我将如何在我的项目中使用该文件?
security - 使用单独的密钥对进行签名和加密的目的是什么?
为什么我需要使用单独的公钥对进行签名和加密,而不是使用与 RSA 相同的密钥对?使用相同的密钥是否存在任何安全问题?
java - ActionScript3 & Java 加密/解密
我有一个与服务器通信的闪存客户端。服务器端代码是在java中。我希望能够加密通信,所以它必须是一种具有 as3 和 java 库的算法。
如果速度比加密的安全性更重要,理想情况下它会使用非对称密钥加密。
AES 和 Blowfish 似乎可以从我所看到的情况下工作。但两者都使用对称密钥。
有任何想法吗?
blackberry - 在 BlackBerry 上使用 RSA 加密时出错
我正在尝试在 Blackberry 上使用其原生 API 的 RSA 加密。我在 Java 中制作了一个公钥/私钥对,并将密钥的模数和指数保存为字符串,这样我就可以从中生成密钥以进行加密和解密。以下代码来自客户端,我得到 aInvalidKeyException
并且回溯为空,所以我不知道发生了什么:
这就是我在服务器端生成密钥的方法:
有任何想法吗?
编辑:我尝试通过在服务器上加密和解密来进行简单的测试,当我尝试解密时,我得到了IllegalBlockSizeException
这些是我的加密和解密方法(服务器端):
这是我正在尝试的简单测试:
c# - C#如何进行加密?
我不是要一个带代码的教程,我正在尝试做研究,但我想确保我问的是正确的问题。
- 我可以使用 .NET 开箱即用的最佳加密形式是什么?
- 公钥/私钥,我在哪里安全地存储这些东西?
- 为了正确执行此操作,我应该拥有哪些工具?
我从 AESCryptoServiceProvider 开始,加密了我传入的字符串,我很高兴。测试如果我调用它两次,它会得到相同的值。然后意识到我没有提供任何形式的密钥,所以应用程序的第二次运行产生了不同的结果。所以我开始阅读,看到 RSA 公钥/私钥等等等。只是想确保我正在阅读我正在做的正确的道路。那里有很多例子,很少有人提到你把这些钥匙放在哪里,或者你从哪里得到它们。
java - 使用 Bouncy Castle API 的 Java 安全性
我想知道 Bouncy Castle API 是否适合 Java 中的非对称加密。
目前我正在使用 Java 的 JCE API 执行此操作。如果我使用 Bouncy Castle API 进行非对称加密会有什么优势吗?