问题标签 [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.
.net - 椭圆曲线密码学的 .NET 实现(库)
请您建议在.NET平台上使用椭圆曲线密码学的任何实现吗?
另外,如果您使用过它们,您能告诉我应该使用的推荐曲线吗?
[编辑]
正如@FatCat 提到的,它的实现在 .NET 框架 3.5 中可用,但仅在 windows vista 上可用。您能否建议另一种使用方式/库?
python - 如何在 Python 中进行 PGP(生成密钥、加密/解密)
我正在用 Python 制作一个程序,通过安装程序分发给 Windows 用户。
该程序需要能够每天下载使用用户公钥加密的文件,然后对其进行解密。
所以我需要找到一个 Python 库,它可以让我生成 PGP 公钥和私钥,并解密用公钥加密的文件。
这是 pyCrypto 会做的事情吗(文档很模糊)?还有其他纯 Python 库吗?任何语言的独立命令行工具怎么样?
到目前为止,我所看到的只是 GNUPG,但在 Windows 上安装它会对注册表产生影响,并且到处抛出 dll,然后我不得不担心用户是否已经安装了这个,如何备份他们现有的密钥环等。我宁愿只需拥有一个 python 库或命令行工具并自己管理密钥。
更新:pyME 可能有效,但它似乎与我必须使用的 Python 2.4 不兼容。
c# - 如何验证签名,从 PEM 文件加载公钥?
我发布这个是希望它可以节省我在这个涉及转换公钥格式的非常愚蠢的问题上浪费的时间。如果有人看到更简单的解决方案或问题,请告诉我!
我使用的电子商务系统会向我发送一些数据以及签名。他们还以 .pem 格式给我他们的公钥。.pem 文件如下所示:
-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDe+hkicNP7ROHUssGNtHwiT2Ew HFrSk/qwrcq8v5metRtTTFPE/nmzSkRnTs3GMpi57rBdxBBJW5W9cpNyGUh0jNXc VrOSClpD5Ri2hER/GcNrxVRP7RlWOqB1C03q4QYmwjHZ+zlM4OUhCCAtSWflB4wC Ka1g88CjFwRw/PB9kwIDAQAB -----END PUBLIC KEY-----
这是将上述内容转换为能够验证签名的“RSACryptoServiceProvider”的神奇代码。使用 BouncyCastle 库,因为 .NET 显然(如果没有涉及证书文件的一些主要问题,就无法做到这一点):
然后是实际验证签名的代码:
rsa - 如何结合 n 和 e 在 RSA 中创建公钥?
我有一个 128 字节(1024 位)模数(字节数组格式)和我的指数(也是字节数组格式)。我需要创建一个代表公钥的 128 字节数组。
根据维基百科,“公钥由模数 n 和公共(或加密)指数 e 组成。” 但这并没有告诉我如何混合两者。
正确的操作是什么?
- n^e(会保持 128 字节长吗?)
- 只是 n?
-n 后跟 e?
-n 添加到 e?
- 别的东西?
silverlight - 使用 Silverlight 进行 DSA 公钥系统验证
我需要在 Silverlight 中验证 DSA 签名,并且由于运行时不包括 System.Security.Cryptography.DSA 类,我想知道是否有人有替代方案?
rsa - 授予对 Windows Server 2003 上 RSA 容器的 SYSTEM 帐户的访问权限
我需要从 NT AUTHORITY\SYSTEM 帐户下运行的 Windows 服务访问 RSA 私钥。我可以在服务器上安装私钥,然后在以安装密钥的用户身份运行时使用该密钥。但是,该密钥似乎无法从 Windows 服务中获得。我是否需要一个机器级别的密钥(我理解这会增加泄露的风险),或者有没有办法可以安装一个专门供 SYSTEM 帐户使用的密钥?
encryption - 导入公私交换密钥对
我想将 RSA 1024 公私交换密钥对从 Machine-1 导出到 Machine-2。我在 XP 中使用 cryptoAPI。
在 Machine-1 中,我生成了密钥对。我包装了一个会话密钥,它实际上加密了一些真实数据。密钥容器名称是“PAIR1”。
在 Machine-2 中,我想用私钥(我在 Machine-1 中生成)解开会话密钥。为此,我想将密钥对从 Machine-1 导出到 Machine-2。
我知道导出持久密钥的安全漏洞。
我试过什么?
我从 Machine_1 将密钥对导出为 PKCS#12 -pfx 文件。当我将它导入到 Machine-2 时,密钥容器名称已从“PAIR1”变为空。我的应用程序需要相同的容器名称才能在交换密钥对中选择正确的私钥。是否可以更改密钥容器名称?
这行得通吗?
用 Machine-2 的公钥包装交换密钥对并将其导入 Machine-2。在这种情况下,您认为关键容器名称将保持不变还是会改变?我觉得这可能是正确的方法。
编辑: 我问这个查询的原因是因为我用交换密钥对(公钥)包装了一个会话密钥,并将包装的密钥与加密数据一起放在服务器的介质中。该媒体将绕过不同的客户端并返回到服务器。此时,我将使用解包的会话密钥解密我的数据。这种解包需要交换私钥。我这样做是为了演示目的,我不能指望我们的营销人员进行密钥交换等。我们希望向客户展示安全方面并减少与我们的营销人员进行设置的麻烦。
最后,我导出了密钥对并在我想要的任何地方导入了相同的密钥对,尽管 Ramsus 方法是正确的做法。
public-key-encryption - 双向非对称加密如何工作?
假设我们有 Alice 和 Bob。
爱丽丝向鲍勃发送一条她用鲍勃的公钥加密的消息。Bob 是唯一可以使用他的私钥解密它的人。但是他怎么能确定消息来自爱丽丝呢?
假设他回复,使用 Alice 的公钥加密他的消息。只有 Alice 可以解密消息。但她怎么能确定它是鲍勃寄来的呢?
爱丽丝是否必须在她的消息中添加某种公共散列,以便鲍勃可以说“这肯定来自爱丽丝?”
encryption - 是否有 8 位块大小的公私钥加密算法?
我检查了 TripleDES。它的块大小为 64 位。
8位块大小有什么算法吗?
谢谢
编辑:我不打算将其用于完美保护,而是用于以防万一的情况,即看到代码的人不应该找到明文。所以8位对我来说还可以。
encryption - 在 CryptoAPI 中导出密钥时出现 BAD_UID 错误
我正在为 Microsoft CryptoAPI 编写一个测试应用程序。我想使用第二方的公钥导出一方的密钥,然后将该密钥导入为第二方的密钥(这为通信设置了共享密钥)。这是我的代码:
这给出了错误:
通过调用以下命令为 encryptT 和 decryptT(发送者、接收者)生成公钥对:
知道什么可能导致错误吗?
谢谢,