问题标签 [rsacryptoserviceprovider]
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 - 如何在 RSACryptoServiceProvider .NET 类中指定公钥
我需要用数字签名签署一个 xml-doc。我知道在 .NET 中有一种方法可以做到这一点,但我不明白如何在 RSACryptoServiceProvider 中指定我自己的公钥。我需要基于特殊关键字的公钥。我怎样才能做到这一点?请帮帮我。
.net - 如何从商店导出不可导出的私钥
我需要从 Windows 商店导出私钥。如果密钥被标记为不可导出,我该怎么办?我知道有可能,程序越狱可以导出这个密钥。
要导出密钥,我使用Org.BouncyCastle.Security.DotNetUtilities.GetKeyPair()
从(RSACryptoServiceProvider)cryptoProv.ExportParameters(true)
. Org.BouncyCastle.Cms.CmsSignedDataGenerator
我用于 CMS 签名的导出密钥。
我需要 .Net 的解决方案,但任何解决方案都会很有用。谢谢你。
c# - 使用 RSACryptoServiceProvider 生成随机 RSA 密钥
如何使用 RSACryptoServiceProvider 类生成随机 RSA 公钥和私钥 (RSAParameters)?每次创建 RSACryptoServiceProvider 的新实例时,我最终都会导出相同的密钥。
谢谢
c# - Perl 和 .NET RSA 一起工作?从 Perl 公钥在 .NET 中加密?从 Perl 加载私钥?
我有一个应用程序将从第三方获取公钥。公钥是在 Perl 中使用 Crypt::RSA::Key 生成的。使用BigInteger 类,我能够加载此密钥并加密应该能够由私钥解密的值。我这样做的代码是:
设置属性以供以后使用:
// ... 剪断 ... //
在构造函数中初始化属性:
// ... 剪断 ... //
做加密。注意文本是我要加密的值;ret是我返回的值:
大部分代码是从其他人的项目中提取的,他们声称这一切都适用于他们。不幸的是,我无法看到他们的实际输入值。
这失败了,将无效值返回给第 3 方。
第一个问题- 你看到上面的代码有什么问题吗?
其次
我尝试通过与第 3 方交谈并从他们那里获取私钥来调试它。当我尝试加载完整的私钥时失败了。我无法弄清楚 Perl 的对象数据和 .NET RSAParameters 之间的映射。我拥有的关键数据是:
'版本' => '1.91', '检查' => 0, '身份' => '给我的东西 (2048)', '私人' => { '_phi' => '218..snip..380' , '_n' => '218..snip..113', '_q' => '148..snip..391', '_p' => '146..snip..343', '_u' = > '127..snip..655', '_dp' => '127..snip..093', '_dq' => '119..snip..413', '_d' => '190.. snip..533', '_e' => '65537' }, 'Cipher' => 'Blowfish' }, 'Crypt::RSA::Key::Private' );
我发现到 RSAParameters 对象的映射是这样的:
当我加载这些值时(都以与上述相同的方式使用 BigInteger 类);我因“错误数据”而失败。当我尝试调用时出错:rsa.ImportParameters(this.RsaParams);
此错误的堆栈跟踪是:
对这部分问题有什么想法吗?
最后,我主要是 VB.NET 开发人员,但在涉及 c# 时左右摇摆不定,我觉得我对它相当流利。然而,在加密方面,我是个新手。
c# - 对象已存在于 RSACryptoServiceProvider 中
我将源代码从一个应用程序复制到另一个应用程序,两者都在同一台机器上运行。我还在两个应用程序中为下面的 containerName 使用相同的字符串。
是什么阻止我的新应用程序读取保存在其他应用程序中的密钥?所有其他事情都是平等的,登录用户帐户等。
c# - 使用 RSACryptoProvider 从 PHP 中加密的字符串中解密时出现“错误数据”
我正在尝试解密使用 RSA 在 PHP 中加密的 C# 中的字符串,而对于我的生活,我无法做到正确。我已将问题浓缩为 .NET 和 PHP 中的两个示例测试应用程序:
在 C# 中:
我第一次运行它时,它输出(格式很好):
我已验证密钥在运行之间已正确保存和加载。
然后我使用Crypt_RSA 包在 PHP 中执行此操作:
这将输出我的解密字符串:
最后,当我将此作为输入再次运行我的 C# 应用程序时,在调用 Decrypt 方法时出现以下异常:
坦率地说,我正处于一个我不知道我还能尝试什么的地步。任何可能出现问题或我可以尝试的其他建议都将非常受欢迎。
c# - 在 Android 设备上验证 C# 生成的数字签名
我正在编写一个想要验证由 C# 程序生成的字符串是否真实的 Android 应用程序(即由我编写的另一个应用程序生成)。为此,我对字符串进行签名并将字符串和字符串的散列传输到 Android 设备。我可以在 Android 应用程序中包含用于创建散列字符串的公钥,这样我就不必传输它了。产生所有这些的 C# 代码类似于以下内容:
为了传输数据,我将签名编码为 base64,使用:
signatureString = System.Convert.ToBase64String(signature);
我从关键参数中手动提取模数和公共指数。它们似乎都已经是 Base64 编码的。在android应用程序中,我试图验证签名如下:
当我与decodedBytes
原始字符串的 SHA1 哈希值进行比较时,它们是不同的。试图找出原因,我用大量的日志语句逐步完成了这个过程。模数的 BigInteger 似乎与 C# 代码使用的模数不同。指数也是如此。我怀疑这是因为 Java 的字节类型是无符号的?
所以,两个问题:
1)我做错了什么(或没做错)?有没有办法手动将模数和指数从一个设备移动到另一个设备以验证签名?
2)有没有办法在更合适的抽象级别上完成我的目标?
c# - 从 x509Certificate2 启动 RSACryptoServiceProvider 的最佳方式?
从我从密钥库中拉出的新RSACryptoServiceProvider
对象中启动新对象的最佳方法是什么?X509Certificate2
证书与公共(用于加密)和私有(用于解密)密钥相关联。
我目前正在使用该FromXmlString
方法,但必须有更好的方法。
谢谢
c# - 生成公钥-私钥对并在 asp.net 的文本框中显示它们
任何人都可以解释 RSAParameters 的参数我见过像 p,d,e,q,... 这样的参数我需要它的私钥和公钥
我得到了链接
http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsaparameters%28v=vs.90%29.aspx[^]
我正在使用示例代码,任何人都可以说它是正确的还是错误的示例代码:
他们给出的公钥是 {e,n} 其中 n = (P*Q) 的结果 私钥是 {d, n} 其中 n = (P*Q) 的结果
在公钥和私钥的示例代码中,我所做的是否正确
多谢
c# - C# RSACryptoServiceProvider ToXmlString()/FromXmlString()
EDIT2:似乎 Convert.FromBase64String 是我的救星。有谁知道逗号是否会在这样的字符串中?我正在做基本的 csv 解析。如果是的话,我总是可以使用引号(但我猜引号也可以在这样的字符串中)但这对我自己来说只是一个小项目,所以通过用','分割更容易解析。
编辑:好的,所以看起来我的问题是当我将加密的字节转换为字符串,然后将该字符串转换回要解密的字节。我怎么能这样做,因为我想将加密的字符串实际存储在某个地方并能够解密该字符串。
我正在尝试将公钥(以及仅用于测试的私钥)保存到 xml 文件中,以便以后可以读取相同的文件,但在尝试解密时出现“错误数据”错误。谁能看到我做错了什么?
}