问题标签 [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 投票
5 回答
83125 浏览

encryption - id_rsa.pub 和 id_dsa.pub 有什么区别?

一个比另一个更安全吗?

0 投票
2 回答
1705 浏览

java - 如何生成用于 64 位公钥加密的密钥对

我需要生成一个 64 位公私钥对,但找不到任何标准算法。

0 投票
1 回答
717 浏览

.net - 反向使用公钥/私钥

我有一种情况,我需要使某些数据可供任何人从特定设备读取,其中数据预加载在设备上,但我不能允许任何人创建自己的设备并用自己的数据填充它相同的格式。

我知道这听起来有点疯狂,但有一个很好的理由!

我计划使用公钥密码术,用公钥加密数据,然后将私钥发布给任何想要读取数据的人。

但是,在查看 RSACryptoServiceProvider 及其工作原理之后,看起来我不能只发布私钥,因为私钥可用于创建公钥。

有人可以证实这种怀疑,或者给我一些关于我如何能够完成这项工作的提示!

非常感谢。

0 投票
6 回答
2607 浏览

java - 对使用公钥和私钥(用于加密)的加密感到困惑

当客户向我的服务器索取许可证时,我正在制作一个许可系统,如果他们被允许拥有许可证,我会向他们发送许可证。

在我当前的系统上,我使用单个私钥加密许可证,并将公钥嵌入到他们用来解密许可证的客户端应用程序中。有用!

其他人告诉我,我应该使用服务器上的公钥加密并将私钥分发给客户端。我在网上搜索过,可以看到有时他们使用私钥加密,有时他们使用公钥加密。

在这种情况下,我该怎么办?

0 投票
3 回答
3037 浏览

c# - 加密产品密钥:公钥和私钥加密

我需要生成和验证产品密钥,并且一直在考虑使用公钥/私钥系统。

我生成我们的产品密钥基于

  • 客户端名称(可以是可变长度字符串)
  • 一个 6 位的序列号。

如果产品密钥的长度可以控制(大约 16 个字符),那就太好了

我需要在基础上加密它们,然后分发解密/验证系统。由于我们的系统是用托管代码 (.NET) 编写的,我们不想分发加密系统,只分发解密。我需要一个公钥私钥似乎是一个很好的方法,用我保留的一个密钥加密并分发解密/验证所需的另一个密钥。

满足上述要求的适当机制是什么?

注意:这不是阻止盗版;这是为了减少新手用户安装他们不需要/未经授权使用的组件的可能性。

0 投票
1 回答
270 浏览

java - 尝试加密过多数据时获取 IllegalBlockSize

这是我的常数

我已经制作了两个这样的公钥/私钥:

我是这样解密的:

这适用于少量数据,当数据变得更大(例如263 字节)时,如果因 IllegalBlockSizeException 而失败。我认为这是因为数据大于 256 字节,但这只是一个猜测,我不知道如何修复它。

我究竟做错了什么?

我将其更改为使用更新方法,但仍然有同样的问题:

顺便说一句,我正在尝试实现数字签名。客户端拥有公钥,服务器拥有私钥。

0 投票
4 回答
8323 浏览

php - 如何使用 PHP 发送和接收加密电子邮件

我在一家医院工作,并开发了一种方法来估计患者对服务的总财务责任,在保险支付其义务之后,在提供任何服务之前。很多患者都在要求报价,我想找到一种安全的方式,根据他们的要求将这些结果通过电子邮件发送给患者。

我正在考虑从生成的报价中删除所有患者信息,因此不会有任何安全问题,但想找到一种方法来加密电子邮件,发送它,并允许患者的电子邮件客户端解密电子邮件。

我不确定如何使用安全证书,尽管它们可能对我来说是最好的选择,即使我必须跳过公司的圈子才能被授予访问面向互联网的证书托管的权限,除了电子邮件之外的所有应用程序都是医院只有一边。

我还在考虑从生成的信件创建 PDF 并加密 PDF,将他们的最后四个社交信息或他们在报价生成过程中与我们共享的其他一些私人信息分配为他们的密码。

0 投票
3 回答
6771 浏览

cryptography - 彩虹表作为大型素数分解的解决方案

在我读过的关于公钥密码学的解释中,据说通过将两个非常大的素数相乘可以得出一些大数。由于分解大素数的乘积几乎不可能非常耗时,因此您有安全性。

这似乎是一个可以用彩虹表轻松解决的问题。如果您知道所用素数的大致大小并且知道其中有 2 个,您可以快速构建一个彩虹表。这将是一个非常大的表,但它可以完成并且任务可以跨硬件并行化。

为什么彩虹表不是基于乘以大素数来击败公钥加密的有效方法?

免责声明:显然,数以万计的疯狂智能安全意识的人并不是碰巧错过了几十年我在一个下午想到的东西。我认为我误解了这一点,因为我正在阅读简化的外行解释(例如:如果使用超过 2 个数字),但我还不够了解,不知道我的知识差距在哪里。

编辑:我知道“彩虹表”与在查找表中使用预先计算的哈希值有关,但上面听起来像是彩虹表攻击,所以我在这里使用这个术语。


编辑2:如答案中所述,没有办法只存储所有素数,更不用说它们的所有产品了。

  • 这个网站说大约有这么多 512 位素数: ((2^511) * 1) / (512 log(2)) = 4.35 × 10 151
  • 太阳的质量是 2 × 10 30 kg 或 2 × 10 33 g
  • 每克太阳有2.17 × 10 124 个素数。
  • 数量。可以容纳 1 KB 的 512 位数字:1 kb = 1024 字节 = 8192 位 / 512 = 16
  • 可以容纳 1 TB:16*1024*1024*1024 = 1.72 × 10 10
  • 拍字节:16*1024*1024*1024*1024 = 1.72 × 10 13
  • 艾字节:16*1024*1024*1024*1024*1024 = 1.72 × 10 16

即使 1 艾字节重 1 克,我们也远未达到能够将所有这些数字放入具有太阳质量的硬盘驱动器所需的 2.17 × 10 124

0 投票
5 回答
13310 浏览

public-key-encryption - 使用公钥加密大文件

我需要使用公钥加密一个 100KB 的文件。我一直在阅读一些帖子,声称使用公钥直接加密大文件是不切实际的,首选方法是使用对称密钥加密文件,然后使用公钥加密此对称密钥。似乎一个天真的解决方案是将大文件分解成碎片并使用相同的公钥加密它们中的每一个。我的问题是这个解决方案是否以及为什么是错误的?

0 投票
6 回答
273 浏览

security - 通过 HTTP(而不是 HTTPS)对用户进行身份验证

初始说明:这仅适用于个人修补项目;我不是在这里写企业安全,如果我是,我会知道最好不要尝试编写自己的方案。:-D

编辑:为了强调上述观点,我试图在“iKnowThisWouldBeABadIdeaInRealLife”下标记它,但 SO 不会接受它,因为它是 >25 个字符。请注意,我知道它不是商业级的!

我需要一种通过 HTTP 对用户进行身份验证的方法(在这种情况下不能使用 HTTPS)。我需要知道另一端的人真的是他们所说的那个人(以相当高的信心)。一旦我确定用户是合法的,我就不关心客户端和服务器之间的内容是否以明文形式发送。

我正在查看的问题是尝试将密码从客户端发送到服务器而不以明文形式发送。我考虑过在 javascript 中尝试一些公钥加密,因为一些谷歌搜索已经出现了一些看起来很有趣的库。

这是我正在考虑的方案:

(假设AA'分别代表私钥和公钥;另外,enc(text, key)dec(cyphertext, key)代表加密/解密函数)

我在这方面看到的一个弱点是,正在收听交换的 BAD GUY,虽然他没有A,但现在有一个已知的密文/明文组合,我记得在加密课程中是BAD IDEA。我想一些盐可以以某种方式缓解这种情况?

所以这是我的[两个]问题:

  1. 这是一个“好”的计划吗?(请记住,我不在乎此初始交换之后的任何内容是否是明文 - 我只是在这里尝试验证初始身份)
  2. 解决上述“已知明文/密文对”弱点的最佳方法是什么?盐?

谢谢!


编辑: 感谢所有讨论!只是为了澄清:

  • 我不担心向客户保证服务器就是他们所说的那个人。只有相反(向服务器保证客户是他们所说的人)
  • 我知道 MITM 攻击。该方案并非旨在防止它们。
  • 我知道已经有很多解决方案。这对我来说纯粹是一个学习练习!我并不是要重新发明轮子或制造更好的捕鼠器。这只是为了好玩!
  • 这是我对该方案的思考过程:(我知道我并没有正确使用公钥和私钥,但请耐心等待)

    • 鲍勃走到爱丽丝面前说:“嘿,我是鲍勃。”

    • 爱丽丝说:“好的。我知道鲍勃的‘私钥’。如果你真的是鲍勃,请拿走我刚刚加密的这条秘密消息(用鲍勃的私钥),然后为我解密。”

    • Bob 回复了正确的消息,Alice 很高兴。