在.NET核心中从PEM文件创建X509Certificate2
我想基于PEM文件创建一个X509Certificate2对象.问题是设置X509Certificate2的私有属性.我阅读 x509certificate2.CreateeT.CreateefromCertFile() 然后使用 var rsa = new RSACryptoServiceProvider(); rsa.ImportCspBlob(pvk); 其中pvk是私钥的字节数组(如下所示,从getBytesFrompem读取如何从PEM文件中获取私钥?),设置私钥,但是我得到了 internal.cryptography.cryptothrowhelper+WindowsCryptographicexception带有消息不良版本的提供商. 我如何根据PEM文件中的私钥正确设置X509Certificate2的私钥? 如果我看创建x509certificate2 他们使用 RSACryptoServiceProvider prov = Cr
0 2024-04-17
编程技术问答社区
如何用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
编程技术问答社区
解密受密码保护的含有私钥的PEM
我有以下方法,该方法使用弹力城堡为C#创建一个加密的私钥: public string GetPrivateKey(AsymmetricCipherKeyPair keyPair, string password) { var generator = new Pkcs8Generator(keyPair.Private, Pkcs8Generator.PbeSha1_3DES); generator.IterationCount = 4; generator.Password = password.ToCharArray(); var pem = generator.Generate(); TextWriter textWriter = new StringWriter(); PemWriter pemWriter = new PemWriter(textWriter); pemWriter.WriteObject(pem)
0 2024-04-13
编程技术问答社区
仅使用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 无
0 2024-04-12
编程技术问答社区
从X509证书导出私钥/公钥到PEM
使用.net core ,是否有任何方便的方式从.p12 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,但是类型与System.Security.cryptography core ...没有运气. 换句话说,我找到了一种方法: $ openssl pkcs12
2 2024-04-11
编程技术问答社区
正确地从公钥创建RSACryptoServiceProvider
我目前正在尝试仅从解码的PEM文件创建RSACryptoServiceProvider对象.经过几天的搜索,我确实设法解决了一个有效的解决方案,但还没有准备好生产. 简而言之,为了从构成PEM文件中的公共密钥的字节中创建一个RSACryptoServiceProvider对象,我必须创建指定按键的对象(当前使用SHA256,特别是2048),然后导入一个RSAParameters Exponent和Modulus设置的对象.我这样做; byte[] publicKeyBytes = Convert.FromBase64String(deserializedPublicKey.Replace("-----BEGIN PUBLIC KEY-----", "") .Replace("-----END PUBLIC KEY-----", ""))
0 2024-04-10
编程技术问答社区
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 RmyMoOjXHsKrrwysYIujXADM2LZ0MlFvPb
0 2024-04-10
编程技术问答社区
C# 从RSACryptoServiceProvider导出私人/公共RSA密钥到PEM字符串
我有一个system.security.cryptography.rsacryptoserviceprovider的实例,我需要导出它是pem字符串的关键 - 像这样: -----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQDUNPB6Lvx+tlP5QhSikADl71AjZf9KN31qrDpXNDNHEI0OTVJ1 OaP2l56bSKNo8trFne1NK/B4JzCuNP8x6oGCAG+7bFgkbTMzV2PCoDCRjNH957Q4 Gxgx1VoS6PjD3OigZnx5b9Hebbp3OrTuqNZaK/oLPGr5swxHILFVeHKupQIDAQAB AoGAQk3MOZEGyZy0fjQ8eFKgRTfSBU1wR8Mwx6zKicbAotq0CBz2v7Pj3D+higlX LYp7+rUOmUc6WoB8QGJEvlb0YZVxUg1yDLMWYPE7ddsHsOkBIs7zIyS6cqhn0yZD VTRFj
0 2024-04-10
编程技术问答社区
X509结构的正确释放在链式和主证书添加之间是否有差异?
我需要从内存中添加PEM类型证书,这意味着我不能使用内置的读取式助手. 我的问题是没有关于如何释放内存的文档.现在,我最好的猜测是: SSL_CTX_use_certificate(): //X509 structure SHOULD be freed using X509_free(), as in SSL_CTX_use_certificate_file() SSL_CTX_use_PrivateKey() // EVP_KEY structure SHOULD be freed using EVP_KEY_free(), as in SSL_CTX_use_PrivateKey_file() SSL_CTX_add_extra_chain_cert() // X509 structure SHOULD NOT be freed, as in SSL_CTX_use_certificate_chain_file() ,源头的某个时间似乎表明SSL_C
0 2024-04-08
编程技术问答社区
如何使用openSSL函数验证PEM证书的密钥长度
如何验证以这种方式生成的PEM证书的密钥长度: # openssl genrsa -des3 -out server.key 1024 # openssl req -new -key server.key -out server.csr # cp server.key server.key.org # openssl rsa -in server.key.org -out server.key # openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 我需要的是使用OpenSL的过程的C函数,该过程在PEM证书上执行验证(我将其用于LightTPD HTTPS服务器),并返回证书中存储的密钥的长度(在这种情况下为1024, ). 解决方案 经过一些调整后,我相信找到了正确的例程. 以下内容应该让您从探索其他OpenSSL例程开始,以防您需要处理其他类型的证书(
2 2024-04-08
编程技术问答社区
使用openssl以编程方式提取pem证书信息
使用openssl命令行可以在人类可读模式下提取.pem证书中包含的所有信息;那就是: openssl x509 -noout -in .pem -text 使用OpenSSL API提取此信息的合适步骤是什么? 解决方案 X509_print_ex功能系列是您的答案. #include #include #include int main(int argc, char **argv) { X509 *x509; BIO *i = BIO_new(BIO_s_file()); BIO *o = BIO_new_fp(stdout,BIO_NOCLOSE); if((argc
0 2024-04-07
编程技术问答社区
在C语言中读写rsa密钥到pem文件
我正在编写一个C程序,以生成RSA的键,然后将其写入文件,然后从它们中读取.作业要求我以OpenSSL格式生成文件.所以,我选择了PEM.现在,我有以下功能来创建文件 rsa = RSA_new(); // These 3 keys are generated beforehand rsa->e = e; rsa->n = n; rsa->d = d; fp = fopen(pubkey_file, "w"); if(!PEM_write_RSAPublicKey(fp, rsa)) { printf("\n%s\n", "Error writing public key"); } fflush(fp); fclose(fp); fp = fopen(privkey_file, "w"); // pRsaKey = EVP_PKEY_new(); // EVP_PKEY_assign_RSA(pRsaKey, rsa); if(!PEM_write_RSAPrivate
2 2024-04-06
编程技术问答社区
用Bouncy Castle解密PEM私人(RSA)密钥
目标:从加密的PEM文件中提取RSA私钥.私钥将用于编程签名证书. 环境:Java 8和弹力城堡1.52 使用弹力城堡pemparser(pkcsexception的结果) //Register BC as a crypto provider Security.addProvider(new BouncyCastleProvider()); //Get file handle String caPrivateKeyFname = "cakey.pem"; FileInputStream fis = null; try { fis = new FileInputStream(caPrivateKeyFname); } catch (FileNotFoundException e) { e.printStackTrace(); } //Load and parse P
0 2024-04-03
编程技术问答社区
将PEM编码的RSA私钥转换为AsymmetricKeyParameter
我正在尝试(但失败)创建一种从PEM编码的私钥构建AsymmetricKeyParameter的方法.我如何完成此方法? 看来,BouncyCastle的较旧版本具有pemReader.ReadObject()的方法,其结果可以施放,但不再存在. 我尝试了使用PrivateKeyFactory,PrivateKeyInfo,Asn1Object的各种组合,也许还有其他10种类型,但在某个时候都抛出了例外. static AsymmetricKeyParameter ReadPrivateKeyFromPemEncodedString(string pemEncodedKey) { AsymmetricKeyParameter result = null; using (var stringReader = new StringReader(pemEncodedKey)) { var pemReader = new PemReade
4 2024-04-03
编程技术问答社区
如何用c#语言将pem公钥转换为rsa公钥?
我有一个pem public 键,我想转换为xml格式公钥或不对称键盘. 我可以将pem 私人关键在 public/private xml格式或不对称的按摩器与PemReader在C#中的PemReader一起使用,但是当使用PEM Public 时,钥匙在pemreader中,我会收到错误. 请帮助我. 我的问题还有什么解决方案? 解决方案 这应该做您要使用Bouncycastle的事情. 依赖项: using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.OpenSsl; using Org.BouncyCastle.Security; 从PEM转换为RSA XML格式的代码: StreamReader reader = new StreamReader("yourPrivateKey.pem"); PemR
2 2024-04-03
编程技术问答社区
Java如何使用私钥文件而不是PEM来解密?
使用Java和Bouncy Castle 1.52,我可以使用以下代码通过PEM证书加载私钥.我也有一个私有.什么是直接使用private.key文件而不是pem的代码? String keyPath = "C:\\RSA7\\privatenopass.pem"; BufferedReader br = new BufferedReader(new FileReader(keyPath)); PEMParser pp = new PEMParser(br); PEMKeyPair pemKeyPair = (PEMKeyPair) pp.readObject(); KeyPair kp = new JcaPEMKeyConverter().getKeyPair(pemKeyPair); pp.close(); cipher.init(Cipher.DECRYPT_MODE, kp.getPrivate()); 解决方案 这很简单,因为Java本身已经使用PKCS#8编码来编
0 2024-04-03
编程技术问答社区
JcaPEMWriter能否生成PKCS#8输出?
以下代码使用Bouncycastle的JcaPEMWriter类来输出PKCS#1格式中随机生成的RSA私钥(-----BEGIN RSA PRIVATE KEY-----): public static void main(String[] args) throws Exception { final KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); kpg.initialize(2048, null); final KeyPair kp = kpg.generateKeyPair(); final PrivateKey privateKey = kp.getPrivate(); final StringWriter s = new StringWriter(); try (JcaPEMWriter w = new JcaPEMWriter(s)) {
0 2024-04-03
编程技术问答社区
使用bouny castle正确地创建一个带有中间证书的新证书
所以我的问题如下, 基本上,我想使用充气城堡(JDK16版本1.46)创建证书链.我对有弹性城堡和爪哇的新手是新手. 到目前为止,我能够创建一个我用作根证书的自签名证书.这是使用以下代码完成的: //-----create CA certificate with key KeyPair caPair = Signing.generateKeyPair("DSA", 1024, null, null); 这基本上是创建按键,两个空选项适用于提供商,如果需要的话,则是一个安全的随机选项. Map> caMap = new HashMap>(); caMap.put(X509Extensions.BasicConstraints, new AbstractMap.Sim
0 2024-04-03
编程技术问答社区
如何使用JCA读取BouncyCastle私钥PEM文件?
在我们的一个应用程序中,私钥是使用Bouncycastle的Pemwriter存储的.目前,我正在调查我们是否可以摆脱Bouncycastle的依赖,因为Java 7似乎拥有我们需要的一切.唯一的问题是,我无法读取数据库中存储的私钥(pem编码的字符串)(证书/公共键很好). 如果我将私有密钥的PEM编码字符串从数据库保存到可以运行openSSL的文件,以将键转换为PKCS#8格式: openssl pkcs8 -topk8 -inform PEM -outform DER \ -in private_key.pem -out private_key.der -nocrypt 生成的输出i可以base64编码,然后使用此java/jca代码读取: byte[] privateKeyBytes = DatatypeConverter.parseBase64Binary(privateKeyDERcontents);
0 2024-04-03
编程技术问答社区
如何将PEM编码的椭圆曲线公钥加载到Bouncy Castle中?
我有一个PEM编码的椭圆曲线公共密钥,我正在尝试将其装入弹性城堡,到目前为止,我尝试过的一切都失败了.这是我要加载的密钥的一个示例: -----BEGIN PUBLIC KEY----- MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQBhsFCcWY2GaiN1BjPEd1v+ESKO6/0 D0sUR4y1amHnOr3FZx6TdqdoSBqxownQrnAKGCwagGxUb7BWwPFgHqKQJHgBq+J7 F+6m5SKAEL1wS5pqya91N7oudF3yFW8oZRE4RQRdSLl3fV2aVXKwGDXciwhUhw8k x5OS4iZpMAY+LI4WVGU= -----END PUBLIC KEY----- 它由 nodejs crypto 模块和曲线名称是secp521r1.后来,它是由 npm npm package key-incoder 编码.我已经在JavaScript(实际上是Clojurescript)中使用了
2 2024-04-03
编程技术问答社区