Tag: pem

从字符串加载.Net中的Jira公共证书(如何在.Net中将ASN.1编码的SubjectPublicKeyInfo转换为X509证书)

我正在构建一个oauth 1.0a服务,它将由Jira中的小工具使用,它是一个用C#编写的.Net 3.5应用程序。 Jira使用RSA-SHA1签名方法向此服务发出请求,这意味着validation我需要创建X509Certificate实例的请求的签名形成其公共证书。 在Jira应用程序中,您可以通过转到消费者信息屏幕(也包含Jira的消费者密钥等)来获取公共证书,并以此格式显示公钥: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCObJRTGSZbAo jRkvKmm0cwFXnKcPMfR4t/sghvLe/+QVs6TJOz5cUh5UokSqyz VeMsL0jomP18ZcR3SPcIFT7xtOGQjLwLk7ghfYSsxjTGs9VxsC /PQk5OQRP3v43IxFNF3M2SYhFWJZTOnqrab5AsMh2Kxdv+D69D CINXCu5ltQIDAQAB 查看生成此密钥的Jira代码,我可以看到它(假设)PEM编码时没有BEGIN / END证书页眉/页脚。 RSAKeys.toPemEncoding(consumer.getPublicKey()) RSAKeys是一个开源类,可在此处找到: https://studio.atlassian.com/source/browse/OAUTH/trunk/api/src/main/java/com/atlassian/oauth/util/RSAKeys.java?r=HEAD 我希望将此公共证书(密钥)加载到.Net中的X509Certificate实例中,但到目前为止我的尝试都失败了。 这是我的代码: static readonly Regex stripRegex = new Regex(“—–[AZ ]*—–“); public string ConvertFromOpenSsl(string key) { return stripRegex.Replace(key, “”).Replace(“\r”, “”).Replace(“\n”, “”); } public X509Certificate2 GetConsumerCertificate(IConsumer consumer) { string cert = @”MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCObJRTGSZbAo jRkvKmm0cwFXnKcPMfR4t/sghvLe/+QVs6TJOz5cUh5UokSqyz VeMsL0jomP18ZcR3SPcIFT7xtOGQjLwLk7ghfYSsxjTGs9VxsC /PQk5OQRP3v43IxFNF3M2SYhFWJZTOnqrab5AsMh2Kxdv+D69D CINXCu5ltQIDAQAB”; string converted = ConvertFromOpenSsl(cert); var […]

如何在C#中将xml格式的密钥对更改为PEM格式?

我尝试将创建的密钥对以xml格式更改为PEM格式。 这是我的代码。 CspParameters cspParams = new CspParameters(); cspParams.ProviderType = 1; cspParams.Flags = CspProviderFlags.UseArchivableKey; cspParams.KeyNumber = (int)KeyNumber.Exchange; rsaProvider = new RSACryptoServiceProvider(1024,cspParams); RSAParameters rsa_params = rsaProvider.ExportParameters(true); byte[] rsa_export = rsaProvider.ExportCspBlob(true); //here I’ve try to get private key data string data__ = Convert.ToBase64String(rsa_export); FileStream fs = new FileStream(privateKeyFileName, FileMode.CreateNew); string type = “RSA PRIVATE KEY”; string header = […]

如何从PEM文件中使用rsa解密

我正在使用以下c#代码使用带有PEM文件的rsa进行加密和解密: 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); rsaParam.Modulus = Buffer; rsa.ImportParameters(rsaParam); byte[] encryptedMessageByte = rsa.Encrypt(Convert.FromBase64String(elementToEncrypt),false); return Convert.ToBase64String(encryptedMessageByte); } public string decrypt(string elementToDesencrypt, string pathPublicKey) { string pem = System.IO.File.ReadAllText(pathPublicKey); byte[] Buffer = getBytesFromPEMFile(pem, “RSA PRIVATE […]

仅使用Bouncy Castle阅读PEM RSA公钥

我正在尝试使用C#读取仅包含RSA公钥的.pem文件。 我无权访问私钥信息,我的应用程序也不需要它。 文件myprivatekey.pem文件以。开头 —–BEGIN PUBLIC KEY—–并以—–END PUBLIC KEY—– 。 我目前的代码如下: Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair keyPair; using (var reader = File.OpenText(@”c:\keys\myprivatekey.pem”)) keyPair = (Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair)new Org.BouncyCastle.OpenSsl.PemReader(reader).ReadObject(); 但是,代码会抛出带有消息的InvalidCastException 无法将“Org.BouncyCastle.Crypto.Parameters.DsaPublicKeyParameters”类型的对象强制转换为“Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair”。 当没有私钥信息时,如何使用Bouncy Castle的PemReader只读取公钥?

将私钥/公钥从X509证书导出到PEM

有没有方便的方法从使用.NET Core的 PEM格式的.p12证书导出私钥/公钥? 没有在低级别操作字节? 我用谷歌搜索了几个小时,几乎没有任何东西可用于.net核心,或者没有记录在任何地方.. 我们有一个X509Certificate2 var cert = new X509Certificate2(someBytes, pass); var privateKey = cert.GetRSAPrivateKey(); var publicKey = cert.GetRSAPublicKey(); // assume everything is fine so far 现在我需要将密钥导出为两个单独的PEM密钥。 我已经在BouncyCastle中尝试过PemWriter ,但这些类型与Core的System.Security.Cryptography不兼容..没有运气。 – -编辑 – – 换句话说,我找到了一种如何写这个的方法: $ openssl pkcs12 -in path/to/cert.p12 -out public.pub -clcerts -nokeys $ openssl pkcs12 -in path/to/cert.p12 -out private.key -nocerts 有人有想法吗? 谢谢 …

从公钥正确创建RSACryptoServiceProvider

我目前正在尝试仅从解码的PEM文件创建RSACryptoServiceProvider对象。 经过几天的搜索,我确实设法解决了一个有效的解决方案,但它不是一个可以生产就绪的解决方案。 简而言之,为了从组成PEM文件中的公钥的字节创建RSACryptoServiceProvider对象,我必须创建指定keysize的对象(当前使用SHA256的2048),然后使用Exponent导入RSAParameters对象和Modulus集。 我是这样做的; byte[] publicKeyBytes = Convert.FromBase64String(deserializedPublicKey.Replace(“—–BEGIN PUBLIC KEY—–“, “”) .Replace(“—–END PUBLIC KEY—–“, “”)); // extract the modulus and exponent based on the key data byte[] exponentData = new byte[3]; byte[] modulusData = new byte[256]; Array.Copy(publicKeyBytes, publicKeyBytes.Length – exponentData.Length, exponentData, 0, exponentData.Length); Array.Copy(publicKeyBytes, 9, modulusData, 0, modulusData.Length); // import the public key data (base […]

C#将RSACryptoServiceProvider中的私有/公共RSA密钥导出为PEM字符串

我有一个System.Security.Cryptography.RSACryptoServiceProvider的实例,我需要将它的密钥导出到PEM字符串 – 如下所示: —–BEGIN RSA PRIVATE KEY—– MIICXAIBAAKBgQDUNPB6Lvx+tlP5QhSikADl71AjZf9KN31qrDpXNDNHEI0OTVJ1 OaP2l56bSKNo8trFne1NK/B4JzCuNP8x6oGCAG+7bFgkbTMzV2PCoDCRjNH957Q4 Gxgx1VoS6PjD3OigZnx5b9Hebbp3OrTuqNZaK/oLPGr5swxHILFVeHKupQIDAQAB AoGAQk3MOZEGyZy0fjQ8eFKgRTfSBU1wR8Mwx6zKicbAotq0CBz2v7Pj3D+higlX LYp7+rUOmUc6WoB8QGJEvlb0YZVxUg1yDLMWYPE7ddsHsOkBIs7zIyS6cqhn0yZD VTRFjVST/EduvpUOL5hbyLSwuq+rbv0iPwGW5hkCHNEhx2ECQQDfLS5549wjiFXF gcio8g715eMT+20we3YmgMJDcviMGwN/mArvnBgBQsFtCTsMoOxm68SfIrBYlKYy BsFxn+19AkEA82q83pmcbGJRJ3ZMC/Pv+/+/XNFOvMkfT9qbuA6Lv69Z1yk7I1ie FTH6tOmPUu4WsIOFtDuYbfV2pvpqx7GuSQJAK3SnvRIyNjUAxoF76fGgGh9WNPjb DPqtSdf+e5Wycc18w+Z+EqPpRK2T7kBC4DWhcnTsBzSA8+6V4d3Q4ugKHQJATRhw a3xxm65kD8CbA2omh0UQQgCVFJwKy8rsaRZKUtLh/JC1h1No9kOXKTeUSmrYSt3N OjFp7OHCy84ihc8T6QJBANe+9xkN9hJYNK1pL1kSwXNuebzcgk3AMwHh7ThvjLgO jruxbM2NyMM5tl9NZCgh1vKc2v5VaonqM1NBQPDeTTw= —–END RSA PRIVATE KEY—– 但根据MSDN文档,没有这样的选项,只有某种XML导出。 我不能使用任何第三方库,如BouncyCastle。 有没有办法生成这个字符串?

C#RSA公钥输出不正确

我目前正在尝试使用C#生成并发送公共RSA密钥。 它应该是PEM格式的2048位长密钥。 我使用OpenSSL命令成功完成了以下操作(缩短了一些输出): $ openssl genrsa 2048 Generating RSA private key, 2048 bit long modulus ……………………………………………………+++ ……………………………………………………+++ e is 65537 (0x10001) $ openssl rsa -pubout —–BEGIN RSA PRIVATE KEY—– MIIEowIBAAKCAQEAy1MoBtENHBhYLgwP5Hw/xRGaBPHonApChBPBYD6fiq/QoLXA RmyMoOjXHsKrrwysYIujXADM2LZ0MlFvPbBulvciWnZwp9CUQPwsZ8xnmBWlHyru xTxNSvV+E/6+2gMOn3I4bmOSIaLx2Y7nCuaenREvD7Mn0vgFnP7yaN8/9va4q8Lo … … y5jiKQKBgGAe9DlkYvR6Edr/gzd6HaF4btQZf6idGdmsYRYc2EMHdRM2NVqlvyLc MR6rYEuViqLN5XWK6ITOlTPrgAuU6Rl4ZpRlS1ZrfjiUS6dzD/jtJJvsYByC7ZoU NxIzB0r1hj0TIoedu6NqfRyJ6Fx09U5W81xx77T1EBSg4OCH7eyl —–END RSA PRIVATE KEY—– writing RSA key —–BEGIN PUBLIC KEY—– MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy1MoBtENHBhYLgwP5Hw/ xRGaBPHonApChBPBYD6fiq/QoLXARmyMoOjXHsKrrwysYIujXADM2LZ0MlFvPbBu lvciWnZwp9CUQPwsZ8xnmBWlHyruxTxNSvV+E/6+2gMOn3I4bmOSIaLx2Y7nCuae nREvD7Mn0vgFnP7yaN8/9va4q8LoMKlceE5fSYl2QIfC5ZxUtkblbycEWZHLVOkv +4Iz0ibD8KGo0PaiZl0jmn9yYXFy747xmwVun+Z4czO8Nu+OOVxsQF4hu1pKvTUx 9yHH/vk5Wr0I09VFyt3BT/RkecJbAAWB9/e572T+hhmmJ08wCs29oFa2Cdik9yyE 2QIDAQAB —–END […]