问题标签 [public-key-encryption]

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.

0 投票
3 回答
3076 浏览

c# - RSA encryption from Flex client and Corresponding Decryption from Web service

I'm having a problem setting up RSA encryption/decryption mechanism between flex client and web service written in c#. The idea is this: I'll encrypt some text from flex and then decrypt it from web service. I'm using as3crypto library from google. It is encrypting/decrypting text properly. I also have the code on the web service side to encrypt/decrypt properly. My problem is synchronizing them - basically sharing the public key to flex and keeping the private key to the web service.

My flex "encrypt" function takes modulus and exponent of RSA to do text encryption, so how do i get these modulus and exponent attributes from the web service's RSACryptoServiceProvider, so they speak the same standard. I tried the RSAKeyInfo.Modulus RSAKeyInfo.Exponent from the web service and fed them to the flex client. After doing encryption on flex I took the cipher text and fed it to decrypt method on web service, but it is giving me "bad data" error message.

How do i make sure they are both using the same byte 64 or 128 byte encryption . ie the input from flex should fit to what is expected by the web service RSACryptoServiceProvider's decrypt method. (I'm assuming the size might be a problem, may be it's not - i'm lost)

Here is the code, first flex client followed by web service c# code

And web service part is as follows:

I'm not quite sure if this RSA set up is the way to go... Any kinda comment / advice/ or recommended solution is welcome, thanks guys

0 投票
2 回答
80 浏览

implementation - 检查我对公钥加密的理解和关于算法实现大小的问题

如果以下关于事情如何发展的示例基本上是正确的,我对公钥加密有疑问。然后我想知道在哪里可以找到我称之为 KG1、EA1 和 DA1 的三种算法的实现,以及每种算法的代码行数。

Alice 想要安全地获取消息。她使用密钥生成算法 KG1 创建私钥“C2A836B33FF1E”和公钥“35B1AC692”,并将公钥发布给全世界。

Bob 将他的消息“HELLO FROM BOB”和公钥“35B1AC692”的输入放入加密算法 EA1 中,生成字符串“DF1537532CB23B”并将该字符串发送给 Alice。Chuck 也截取了一份副本。

Alice 有一个解密算法 DA1,可以将字符串“DF1537532CB23B”和她的私钥“C2A836B33FF1E”作为输入,并产生输出“HELLO FROM BOB”,但由于 Chuck 没有私钥“C2A836B33FF1E”,他不能将“DF1537532CB23B”转换为“HELLO FROM BOB”。此外,虽然 Chuck 知道 KG1 算法和公钥“35B1AC692”,但他不能使用这些信息来回溯到私钥。

0 投票
1 回答
1759 浏览

java - 有效数据填充数据的 RSA 解密失败 (BadPaddingException)

在 Java 中使用 RSA 加密/解密时,我面临一个非常特殊的问题。

示例代码:

每个人都可以清楚地看到:我使用公钥加密明文,然后使用私钥解密密文。

此代码崩溃并显示以下消息:

我还尝试明确使用“RSA/ECB/NoPadding”,但在解码期间失败。(例如,解码后的密文与原始明文不匹配)。

最后但并非最不重要的一点是,我尝试在使用我自己的 PKCS1.5 填充函数(也就是 PKCS1.5 规范)时执行此操作:

EMB = 00 || 02 || 研发 || 00 || MD
EMB 是长度为 k 的编码消息块,
其中 RD 是 8 个随机非零字节
MD 是最大长度 k = 11,并且可选地用零字节填充以使 EMB 长度为 k。

经过两天的测试,我只能得出结论,Java 中的 RSA 算法存在缺陷,或者根本没有执行我期望它执行的操作。

非常欢迎对上述代码提出任何建议或修复,因为我完全不明白为什么上述代码不能按预期工作。

0 投票
3 回答
11374 浏览

php - 如何在 PHP 中加密长字符串?

我正在使用 PHP 的 openssl_public_encrypt() 来使用 RSA 加密数据。但它不会加密大于一定大小的数据。

我怎样才能让它加密任意长度的数据?

0 投票
1 回答
26531 浏览

python - 在 Python 中使用 RSA 加密文件

我正在使用 PyCrypto 使用 RSA 实现文件加密。

我知道这有点不对,首先是因为 RSA 非常慢,其次是因为 PyCrypto RSA 只能加密 128 个字符,因此您必须将文件分解为 128 个字符块。

这是到目前为止的代码:

所以我的问题是:有没有更好的方法在文件上使用私钥/公钥加密?

我听说过 Mcrypt 和 OpenSSL,但我不知道它们是否可以加密文件。

0 投票
3 回答
5218 浏览

cryptography - RSA私有指数确定

我的问题是关于 RSA 签名的。

如果是 RSA 签名:

加密 -> y = x^d mod n,解密 -> x = y^e mod n

  • x -> 原始消息
  • y -> 加密消息
  • n -> 模数(1024 位)
  • e -> 公共指数
  • d -> 私有指数

我知道 x、y、n 和 e。知道这些我可以确定d吗?

0 投票
1 回答
6754 浏览

delphi - 如何使用 Synapse 建立安全连接?

我正在测试 Synapse,想知道如何建立安全连接。我注意到它支持 SSL,但我不确定它是否适合我的需要。我没有 CA 的证书。我只想加密我的服务器程序和客户端程序之间的所有数据。当然,我可以在发送之前自己加密数据。但如果 SSL 可以加密数据,也许我可以使用它。据我所知,SSL 用于“加密”和“身份验证”。我需要的只是“加密”。突触可以吗?

更新:

感谢 daemon_x 和 Synapse 的作者 Lukas Gebauer 的帮助,我想我终于成功了。以下是我所做的:

服务器端

1) 在您的单元中使用 ssl_openssl 并将 'libeay32.dll' 和 'ssleay32.dll' 放到 exe 文件的同一目录中

2) 接受连接后,为新创建的套接字添加以下代码行。

客户端

1) 在您的单元中使用 ssl_openssl 并将 'libeay32.dll' 和 'ssleay32.dll' 放到 exe 文件的同一目录中

2)连接到服务器后,添加以下行。

如果没有发生错误,则连接现在是安全的。但是,当您运行代码时,如 Synapse 文档中所述,您可能会注意到 SSLAcceptConnection 需要一些时间才能返回。因此,如果您想加快速度,最好预先创建证书文件和私钥文件。并在 SSLAcceptConnection 之前添加以下代码

如果您没有证书和私钥,请参阅 ssl_openssl 中的“CreateSelfSignedCert”获取自签名证书和私钥。例如,您可以通过 WriteStrToStream 将 FCertificate 和 FPrivatekey 保存到文件中并在以后使用它们。

0 投票
1 回答
1205 浏览

encryption - 在 Python 中使用 RSA 加密文件而不存储任何密码

我在用 Python 中的 RSA 加密文件后问了一个类似的问题,但这个问题有不同的含义。

我正在使用 AES 加密文件,使用 RSA 加密 AES 密码。

唯一的区别是我真的不想存储 AES 密码。用户必须提供其 RSA 密钥的路径和密码。

那么你觉得这个方案怎么样?

另一种选择是经典方案,当您生成随机密码时,使用随机密码使用 AES 加密文件,使用 RSA 加密随机密码并仅存储加密结果。

如果你真的需要知道我为什么需要这个,这是我的一个项目,http://code.google.com/p/scrambled-egg

你觉得这个方案怎么样?先感谢您 !

0 投票
1 回答
269 浏览

networking - 帮助设计安全的网络协议

在一个应用程序中,我有一个网络服务器和客户端。握手后,假设客户端发送"userId sessionId SOME_COMMAND param param param".

我已经确定了客户端,并且相应地在服务器上检查了 sessionId,因此身份不再是问题。

但我想防止黑客修改消息或创建虚假消息,例如发送"userId sessionId SOME_COMMAND paramModified paramModified paramModified".

我考虑过使用一对私有/公共加密密钥,并在消息本身中发送消息的哈希值。但由于它在客户端程序中是自动化的,我可能必须在握手期间发送公钥。所以黑客可以简单地检索它并生成正确的哈希值。

我也可以使用复杂的加密种子或算法,但我与黑客打交道的经验告诉我,他们会反编译任何东西。

所以底线是:我可以隐藏服务器上运行的所有内容,但我无法隐藏客户端程序上的任何内容。而且我想禁止修改客户端程序应该发送的消息。

我什至不知道这是否可能。我愿意接受任何建议。顺便说一句,我正在使用 Java,尽管它应该不是很相关。谢谢。

0 投票
1 回答
195 浏览

encryption - 交换对称密钥

我有一个将加密数据发送到 Web 服务的 WinForms 客户端。WinForms 客户端创建一个 Symmetric RijndaelManaged sessionKey 并且还有一个“硬编码的 RSA 非对称公钥”。

我正在使用 EncryptedXml 类,它可以很容易地打包我的数据。

Web 服务具有“硬编码”的私钥和公钥,并且可以成功解密 SessionKey,然后使用它来解密我发送的实际数据。

这几乎是由 EncryptedData 类自动处理的。

我遇到的问题是,在 Web 服务端,当我想回复时,我似乎无法弄清楚如何获取发送过来的 SessionKey。

在我对 Web 服务端进行任何解密之前,我可以看到加密的会话密钥,但在我解密 XML 之后,它就消失了(因此我没有任何会话密钥用于我的回复)。

任何想法如何获得这个未加密的密钥?