如何在C#中解密JWE源(用RSA1_5 A256CBC-HS512加密的)?
我正在实施一个客户端,以通过密码学方式与某些服务器进行通信.客户端将带有public RSA密钥的请求发送到服务器.文档"如何与服务器通信"具有Java代码的示例.以下代码生成公共密钥: KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); keyGen.initialize(2048); KeyPair keypair = keyGen.genKeyPair(); byte[] pubKeyBytes = keypair.getPublic().getEncoded(); 我需要在C#中实现我的客户端.我找到了如何在C#中进行相同操作的方法: var rsa = new RSACryptoServiceProvider(2048); var parameters = _rsa.ExportParameters(includePrivateParameters: false); 客户端使用参数和解
0 2024-04-16
编程技术问答社区
如何使用公钥加密法加密一个字符串
我正在尝试实施自己的RSA加密引擎.给定这些 rsa algorithm 值: > p = 61. // A prime number. q = 53. // Also a prime number. n = 3233. // p * q. totient = 3120. // (p - 1) * (q - 1) e = 991. // Co-prime to the totient (co-prime to 3120). d = 1231. // d * e = 1219921, which is equal to the relation where 1 + k * totient = 1219921 when k = 391. 我正在尝试编写一种方法来加密字符串中的每个字节并返回加密字符串: public string Encrypt(string m, Encoding encoding) { byte[] bytes = encoding.GetBytes
0 2024-04-16
编程技术问答社区
UWP [通用窗口平台] RSA非对称密钥算法提供商导入公钥
当我尝试在UWP中使用Windows.Security.Cryptography.Core时,我总是会出现从AsymmetricKeyAlgorithmProvider导入公共密钥的错误.我尝试了每种组合而没有成功.我总是检查输入字符串,以处于UTF8模式. try { var bytes = Encoding.UTF8.GetBytes(publicKeyString); publicKeyString = Encoding.UTF8.GetString(bytes); Debug.WriteLine(publicKeyString); IBuffer keyBuffer = CryptographicBuffer.DecodeFromBase64String(publicKeyString); byte[] bytes = Convert.FromBase64String(publicKeyString); string hex = "2D2D2D2
0 2024-04-16
编程技术问答社区
创建RSA公钥和私钥
im试图使用Bouncycastle库在ASP.NET Core上制作SHA1WITHRSA符号/验证函数,这是我需要制作关键的所有内容,我正在使用此页面来生成键: https://travistidwell.com/jsendwell.com/jsencrypt/demo/ 但是,我找到了我找到的示例代码( c#c​​#a使用Bouncycastle ),从生成的公共和私钥文本中,我无法制作关键文件,据我了解,这将是一个.cer文件,用于public键和.pem. > 那么,您能建议我一种制作.cer和.pem文件的方法吗?另外,我还没有找到有关使用Bouncycastle库签署SHA1WITHRSA的完整示例 - 或者只是Core C#,如果您能建议我一个完整的例子,我非常感谢,非常感谢. 解决方案 链接的网站以PKCS#1格式和X.509/SPKKI格式的公共键生成私钥,每个键编码. . .NET Core仅支持3.0版的PKCS#1和X.509键的导入.对
0 2024-04-16
编程技术问答社区
无填充的RSA加密 C#
我将设置场景, 我需要使用512位键在给定的字节上计算RSA加密. RSAcryptoServiceProvider类可以很容易地实现,但是在计算RSA加密之前,我需要预先计算自定义填充. 此自定义填充不符合RsacryptoserviceProvider的加密方法中提供的PKCS#1 V1.5或V2.我可以使用任何替代方案C#类来计算RSA加密而不添加自己的填充吗? 我目前正在以openssl.net为替代方案,但是还有其他更好的/ 任何帮助都将被应用. 谢谢. 解决方案 原则上您可以使用ModPow在BigInteger上自行实施.但这将相对较慢,对于私钥操作,它可以开放给定时侧通道攻击. 我相信Mono.Security(您可以在常规.NET上使用它)包含支持未添加RSA的类.
0 2024-04-16
编程技术问答社区
无法解密RSA加密的密钥
长话短说,我正在使用DES,并且我正在使用RSA加密密码,而密码不超过16个字符 问题是当我加密钥匙时,加密的尺寸变得太大了,无法解密 这是我的RSA加密和解密代码: 加密: - 我一直在尝试localpwd作为" asd" byte[] plaintext = utf8.GetBytes(localpwd); byte[] ciphertext = rsaservice.Encrypt(plaintext, false); string cipherresult = Convert.ToBase64String(ciphertext); 然后我在文本框上打印加密的键,然后尝试解密 byte[] ciphertext = utf8.GetBytes(filetest.Text); byte[] plain = rsaservice.Decrypt(ciphertext, true); string plaintext
0 2024-04-16
编程技术问答社区
RSA.ImportParameters()中的CryptographicException--特殊1024密钥中的不良数据
我们有一个C#/.Net 4.0应用程序,该应用程序从网络服务中收到的base64中的字符串导入RSA私钥. 此应用程序适用于1024位的RSA-Keys,但没有一种特殊的RSA私钥(约占键的1%). 这是字节长度: 工作键: modulus => 128字节 exponent => 3个字节 d => 128字节 p => 64字节 q => 64字节 dp => 64字节 dq => 64字节 iq => 64字节 不加工 - modulus => 128字节 exponent => 3个字节 d => 127字节 p => 64字节 q => 64字节 dp => 64字节 dq => 64字节 iq => 64字节 差异在d的lenght(128工作,127不起作用).不工作的键比工作键短1个字节. 设置了参数,但是在执行RSA.ImportParameters(rsaparams)时,它会带有"不良数据
0 2024-04-16
编程技术问答社区
如何从.NET中导入RSA公钥到OpenSSL?
我有一个.NET程序和一个Borland Win32程序,需要传递一些密码安全的信息.现在的计划是让.NET应用程序创建一个公共/私钥对,将公共密钥存储在磁盘上,并在.NET程序运行的时间内将私钥保存在内存中. Borland应用程序将从磁盘中读取公共密钥,并使用OpenSL库将数据与公共密钥加密并将结果写入磁盘. 最后,.NET应用程序将读取加密数据并用私钥解密. 从.NET导出密钥并将其导入OpenSSL库的最佳方法是什么? 解决方案 在.NET程序中创建一个新的RSACryptoServiceProvider.将公共密钥导出为RSAParameters,然后将Modulus和Exponent值写入磁盘.这样: RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(4096); //4096 bit key RSAParameters par = rsa.ExportParameters
0 2024-04-16
编程技术问答社区
如何用rsa从PEM文件中解密
我正在使用以下C#代码使用PEM文件加密和解密: public string encrypt(string elementToEncrypt, string pathPrivateKey) { string pem = System.IO.File.ReadAllText(pathPrivateKey); byte[] Buffer = getBytesFromPEMFile(pem, "PUBLIC KEY"); System.Security.Cryptography.RSACryptoServiceProvider rsa = new System.Security.Cryptography.RSACryptoServiceProvider(); System.Security.Cryptography.RSAParameters rsaParam = rsa.ExportParameters(false);
0 2024-04-16
编程技术问答社区
使用MD5-SHA1哈希算法的RSA签名
从我可以看出的情况下,TLS 1.1要求使用两个哈希算法的串联(MD5和SHA1)的串联证书的内容为数字签名的值.这是否可以使用rsacryptoserviceprovider在.NET中进行? 这不起作用: using (var rsa = new RSACryptoServiceProvider()) { rsa.ImportParameters(...); rsa.SignData(data, new MD5SHA1()); } 这也行不通: using (var rsa = new RSACryptoServiceProvider()) { rsa.ImportParameters(...); rsa.SignHash(new MD5SHA1().ComputeHash(data), "MD5SHA1"); } (MD5SHA1是哈尔戈里氏桥的实现.) 大概这是不起作用的,因为签名嵌入了哈希算法的OID,并且MD5-
0 2024-04-16
编程技术问答社区
创建RSA-SHA1签名
是否可以使用Azure密钥库中存储的X509-CERTIFICATE创建RSA-SHA1签名? [非替代证书] 不幸的是,我无法将hash-Algorithm更改为SHA256或更安全的东西,而且我确实需要将证书存储在Azure Key Vault中. 到目前为止,我已经尝试了 await kvClient.SignAsync(keyVaultUrl, "RSNULL", digest); // digest = 20byte SHA1 await kvClient.SignAsync(keyVaultUrl, "RSNULL", ans1Digest); // asn1Digest = 35byte SHA1 wrapped in ANS1 structure 签名长度似乎是正确的(256个字节),但是验证失败(在具有正确实现的签名验证实现的节点上). 我还尝试使用这样的手动实现签名 - 算法(使用keyVault.EncryptAsync): 数据>
0 2024-04-16
编程技术问答社区
RSA。在javascript中加密密码,但在C#中解密失败
我想将RSA加密应用于我的项目,但遇到了一些麻烦: 首先,我从 http://www.ohohdave.com/rsa/,并添加对我的项目的参考; 第二,我定义了RSA对象和代码以初始化: internal RSACryptoServiceProvider Rsa { get { if (HttpContext.Cache["Rsa"] != null) { RSACryptoServiceProvider encryptKeys = (RSACryptoServiceProvider)HttpContext.Cache["Rsa"]; return encryptKeys; } else { return new RSA
0 2024-04-16
编程技术问答社区
使用RSA的非对称算法私钥和公钥 C#
我有两个不对称的对象,其中包含RSA私有和RSA公钥.从Windows-My钥匙店和用户证书中检索了私钥.如何使用C#中的RSA算法将这些键与RSAcryptoServiceProvider一起使用来加密数据?换句话说,如何指定我要使用已经拥有的密钥? 解决方案 #region "RSA Encrypt/Decrypt" public string RSAEncrypt(string str, string publicKey) { //---Creates a new instance of RSACryptoServiceProvider--- try { RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); //---Loads the public key--- RSA.FromXmlString(publicKey);
0 2024-04-16
编程技术问答社区
在.NET中使用PEM编码的RSA私钥
我有一个看起来像这样的私钥: -----开始RSA私钥--------------- 一些私钥数据 -----结束RSA Priva 我需要在我的C#项目中使用此密钥,但是我找不到任何示例如何以这种格式使用键.谢谢 解决方案 步骤1获取"某些私钥数据" content.remove -----开始RSA私有密钥------和-----结束RSA私有密钥-----,删除所有行符号( " \ n"); 步骤2.析出RSA的键. private RSACryptoServiceProvider CreateRsaProviderFromPrivateKey(string privateKey) { var privateKeyBits = System.Convert.FromBase64String(privateKey); var RSA = new RSACryptoServiceProvider(); var RSAparams =
0 2024-04-16
编程技术问答社区
.net框架中的ImportPkcs8PrivateKey和ImportRSAPrivateKey替代品
在.net core 3.1我正在使用importpkcs8privatekey和InportrsaprivateKey用于以下功能的某些RSA私有密钥导入 private RSA RsaKeyAsPerContent() { //https://csfieldguide.org.nz/en/interactives/rsa-key-generator/ //https://travistidwell.com/jsencrypt/demo/ RSA rSA = RSA.Create(); string privateKeyContent = "...." bool isPkcsprivateKey = privateKeyContent.Contains("BEGIN PRIVATE KEY"); if (isPkcspr
0 2024-04-15
编程技术问答社区
用RSA密钥保证许可证密钥的安全
已经很晚了,我很累,可能很密集.... 我编写了一个我需要保护的应用程序,因此它只会在我生成密钥的机器上运行. 我现在正在做的是获取BIOS序列号并从中生成哈希,然后我使用XML RSA私钥对其进行加密.然后,我签署XML,以确保它不会被篡改. 我正在尝试打包公共密钥以解密并验证签名,但是每次我尝试执行代码作为与生成签名的用户不同的用户时,我会在签名上失败. 我的大多数代码都是从我发现的示例代码中修改的,因为我对RSA加密不像我想要的那样熟悉.以下是我正在使用的代码和我认为我需要使用的代码来使其正常工作... 任何反馈都将不胜感激,因为我在这一点上都非常迷失 我与之合作的原始代码是这样,只要启动程序的用户与最初签署文档签名的用户相同... CspParameters cspParams = new CspParameters(); cspParams.KeyContainerName = "XML_DSIG_RSA_KEY";
0 2024-04-15
编程技术问答社区
使用AES和rsaEncryption(PKCS#1 v1.5填充而不是v2(OAEP)填充)的EnvelopedCMS是否可行?
我一直在使用.NET来进行加密目的.到目前为止,我使用了3DE(OID 1.2.840.113549.3.7)与RSaencryption(OID 1.2.840.113549.1.1.1,RSAES-PKCS1-V1_5).尽管现在必须由 aes 取代(OID 2.16.840.1.101.3.4.1.42),但我仍然必须使用 rsaencryptigntion / rsaes- PKCS1-V1_5 ,而不是 rsaes-oaep . 如果我只向我所调用的封装构造函数传递了一个其他参数,则可以从3DES切换到AES: ContentInfo plainContent = new ContentInfo(new Oid("1.2.840.113549.1.7.1"), data); EnvelopedCms encryptedMessage = new EnvelopedCms(plainContent); // using 3DES // Env
0 2024-04-15
编程技术问答社区
如何验证.NET中的RSA | SHA512 XML签名?
在但是,当我收到SignatureMethod rsa-sha512 ( http://www.w3.org/2001/04/xmldsig-more#rsa-sha512 ), checksignature() cryptograhicexception:无法为提供的签名算法创建signaturedescription. 似乎checkSignature()无法验证RSA-SHA512签名. 有人知道如何检查这类签名吗? 从MSDN站点获取的代码为: public static bool VerifyXml(XmlDocument doc, bool removeSignatureElement = false) { // Check arguments. if (doc == null) throw new ArgumentException("doc"); // Create a new SignedXml obje
0 2024-04-15
编程技术问答社区
C# RSA 使用给定的PKCS#1公钥对文本进行加密
我试图编写一个函数,接收到的字符串要编码为base64中的pkcs#1格式编码字符串,并返回编码的字符串. public static string EncryptRsa(string stringPublicKey, string stringDataToEncrypt) { byte[] publicKey = Convert.FromBase64String(stringPublicKey); // Code to create an RSACryptoServiceProvider with the public key // var rsa = new RSACryptoServiceProvider(??) byte[] dataToEncrypt = Encoding.UTF8.GetBytes(stringDataToEncrypt); var encryptedData = rsa.Encrypt(dataToE
0 2024-04-15
编程技术问答社区