从字节[]/pem字符串中获取公钥-BouncyCastle C#
我正在编写与SmartCard通信的程序.智能卡是公钥的来源.我将公共密钥作为 byte [] 并将其转换为String.我想使用键创建证书签名请求. 在 解决方案 这是从PEM String 获得 x509certificate的简单方法: pemString = pemString.Replace("-----BEGIN CERTIFICATE-----", "").Replace("-----END CERTIFICATE-----", ""); byte[] buffer = Convert.FromBase64String(pemString); X509CertificateParser parser = new X509CertificateParser(); _certificate = parser.ReadCertificate(buffer); 当我们拥有x509certificate对象时,我们可以获取公共密钥: AsymmetricKeyP
2 2024-04-26
编程技术问答社区
在C#中,有签名的程序集的公钥的结构是什么?
使用此代码检索公共密钥字节... var pubKey = AppDomain.CurrentDomain.DomainManager.EntryAssembly .GetName().GetPublicKey(); 键的开始(前32个字节)是什么共同的结构? 它不是ASN.1,也不是可变的.我可以谷歌搜索并重复. // 00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 都是逆转的,还是仅仅是其中的一部分(例如,最后的模量)? 52 53 41 31是RSA1的字符串. 我的钥匙的模量为1024位,所以我正在寻找描述长度的东西. 0x0400(00 04 B.E.)为1024(位),0x80为128(字节,1024/8). // 00 04 00 00 01 00 01 00 这是公共指数的最后4至6?大还是小末日?最后一个空是终结器还是垫
12 2024-04-25
编程技术问答社区
部署项目时的公钥问题
我在部署项目时有以下问题: 警告8 Microsoft报告中的" publicKey"属性的值 查看器2012运行时'与文件c:\ program文件不匹配 (x86)\ Microsoft SDK \ Windows \ V8.0A \ Bootstrapper \ packages \ reportViewer \ reportviewer.msi'. 其他组件是相同的: 警告6Microsoft®系统中的" publicKey"属性的值 SQLServer®2012(x86)的CLR类型不匹配文件 'c:\ program文件(x86)\ microsoft SDK \ Windows \ v8.0a \ Bootstrapper \ packages \ sqlclrtypes_x86 \ sqlsysclrtypes.msi'. 此警告不能忽略,因为它在其他设备上安装软件时会产生问题. 解决方案 Visual Studio检查一个名为Produc
10 2024-04-23
编程技术问答社区
简单使用RSACryptoServiceProvider KeyPassword失败
我想用密码保护我的RSA私钥(谁不会),但以下C#失败: SecureString pw = new SecureString(); pw.AppendChar('x'); CspParameters prms = new CspParameters(); prms.KeyPassword = pw; RSACryptoServiceProvider crypto = new RSACryptoServiceProvider(prms); byte[] encrypted = crypto.Encrypt(Encoding.ASCII.GetBytes("encryptme"), true); ...带有加密摄影感受:"指定的无效类型".如果我取出键盘作业,则可以正常工作. 我或Microsoft做错了什么? 解决方案 设置CspParameters.KeyPassword等于用PP_KEYEXCHANGE_PIN(或PP_SIGNATURE_PIN)调用Cryp
4 2024-04-23
编程技术问答社区
将PEM编码的RSA公钥转换为AsymmetricKeyParameter
我正在尝试创建一种从PEM编码 public 键构建AsymmetricKeyParameter的方法.不幸的是,pemReader.ReadObject()返回null. 这是一个私钥的工作解决方案:转换为PEM编码的RSA非对称键盘表的私钥 此方法有什么问题? static AsymmetricKeyParameter ReadPublicKeyFromPemEncodedString(string pemEncodedKey) { AsymmetricKeyParameter result = null; using (var stringReader = new StringReader(pemEncodedKey)) { var pemReader = new PemReader(stringReader); var pemObject = pemReader.ReadObject(); // null!
16 2024-04-22
编程技术问答社区
如何用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
24 2024-04-20
编程技术问答社区
使用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);
38 2024-04-16
编程技术问答社区
如何从一个已签名的C#应用程序中读取公钥?
我正在使用 签署一个点网exe signcode.exe with an spc/pvk combo 该文件需要在运行时读取自己的公共密钥,以验证一些数据.我走了许多不同的途径. 我尝试了 X509Certificate executingCert = X509Certificate.CreateFromSignedFile(exe); 然后执行cons为null.我猜SignCode不会创建X509签名的文件,尽管如果有一个更改的转换,我很乐意这样做. 编辑 事实证明,上述确实有效....我的空检查(!=!==):) Assembly asm = Assembly.GetExecutingAssembly(); string exe = asm.Location; X509Certificate executingCert = X509Certificate.CreateFromSignedFile(exe); if (executingCert
6 2024-04-13
编程技术问答社区
C# 如何用PGP公钥简单加密一个文本文件?
我已经研究了一些有关如何实现我在问题中所说的内容并找到几个API的信息/p> public String Encrypt(String message, PublicKey publicKey) 不知道这是否可以做到?如果没有 谢谢. 更新: 到目前为止使用它)! 解决方案 我找到了一个教程public class PgpEncrypt { private PgpEncryptionKeys m_encryptionKeys; private const int BufferSize = 0x10000; /// /// Instantiate a new PgpEncrypt class with initialized PgpEncryptionKeys. /// /// ///
10 2024-04-12
编程技术问答社区
仅使用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 无
26 2024-04-12
编程技术问答社区
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
30 2024-04-10
编程技术问答社区
如何在C#中从文件中加载RSA公钥
我需要从文件中加载以下RSA公共密钥,以与RsacryptoserviceProvider类一起使用.我该怎么做? -----BEGIN PUBLIC KEY----- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/syEKqEkMtQL0+d XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+izR KbGMRtur2TYklnyVkjeeHfAggo8vWQmWesnOG55vQYHbOOFoJbk0EkwEr5R/PbKm byXPPN8zwnS5/XXXXXXXXXXXX -----END PUBLIC KEY----- 此代码可与我的pub键一起使用: http://www.jensign.com/opensslkey/a > 这是我正在使用的代码 static string RSA(string input)
2 2024-04-10
编程技术问答社区
WebAuthn-字节长度的 "凭证公钥"。
在WebAuthn中,身份验证器数据包含可变长度attested credential data,然后是extensions,如果有: 由于credential public key字段是CBOR地图. 如果有扩展,如何事先知道该字段的字节长度,以便我可以通过此字段截断而没有将扩展名转到CBOR库? 我使用的CBOR库似乎没有处理额外的字节,而且我不知道CBOR足以知道是否有一个技巧来计算从其第一个字节(或任何其他技巧)中计算地图的字节长度. 解决方案 据我了解, 没有使用CBOR解码器(或Cose键解析器)首先支持"额外字节",以确定"凭据公开的位置)关键数据"结束和"扩展数据"启动的位置. 在 确定证明的凭据数据的长度,这是可变的, 涉及确定IcrentilentPublicKey的开始位置 前面的证书的长度,然后确定 recretentialPublicKey的长度(另请参见[RFC8152]的第7节). fwiw,在Webauthn Spec的G
6 2024-04-05
编程技术问答社区
java.security.spec.InvalidKeySpecException: java.io.IOException: unexpected end of-contents marker
我正在尝试将.pub文件的内容转换为PublicKey,然后将PublicKey转换回String,以确定转换是否在过程. id_rsa.pub : ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0zszKhcZTC8xJidUszmRn4Tr/FxPs04wpCzEstebfTW7Bvqgtt+OdvxoNyYM0LAEnxEF4XhAWcsX7VJJqstZLpDqlKDXFr2d0aVIjksCpZt+ftVRwYHRoERhEOP/UmPFb5rKIkhQbED2kTWg11mW9soc6BhwB3THn/Cyo3t1u2vWjEySgPhKeA3Xzh+5eqV7CUD8V6S7OAT7T9ijf7sRV0R8rwHgTLWJ8+dETnY3L3N0fEaNuaayeNblHqrL53/1+tsBBUF3bAS+1GE6oniSeM/yhtfzf2x+O5MDlVVMbOCC/v+FnfIIEKLA+v1xDSAha7C5cHh82T
34 2024-04-03
编程技术问答社区
PhpSeclib <-> BouncyCastle RSA
我在服务器侧生成了一个对phpseclib的公共/私钥,例如 include 'Crypt/RSA.php'; $rsa = new Crypt_RSA(); $rsa->setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_PKCS1); $rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_PKCS1); extract($rsa->createKey()); echo $privatekey; echo "\n\n\n"; echo $publickey; 现在,我想使用Java Bouncy Castle Engine在客户端公共密钥上导入. 在这里我的公钥 -----BEGIN PUBLIC KEY----- MIGJAoGBAJEGAmaQejDgJaCg/B5+g68arqpMpl6jZ9+p8TBzNRIq+Ygt/n3iqz+pAtltrlRnmqSD svx0LMluw1
20 2024-04-03
编程技术问答社区
弹性城堡-如何从JceOpenSSLPKCS8DecryptorProviderBuilder获得公钥信息
我有以下代码提取私钥 PEMParser parser = new PEMParser(new InputStreamReader(new ByteArrayInputStream(decoded))); Object object = parser.readObject(); PEMDecryptorProvider provider = new JcePEMDecryptorProviderBuilder() .build(props.getProperty(KeytoolFlags.KEYPASS.name()).toCharArray()); JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider(BouncyCastleProvider.PROVIDER_NAME); if (object instanceof PEMEncry
8 2024-04-03
编程技术问答社区
ECC私钥比公钥长
我使用secp192r1曲线生成了ECC公共和私钥.我获得了75个公共场所,私有编码的密钥阵列长度为125.为什么私钥比公钥更长?为什么私钥不超过公众两倍?为什么私钥由于SECP192R1而不是192位= 24个字节? Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); ECNamedCurveParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec("secp192r1"); KeyPairGenerator g = KeyPairGenerator.getInstance("ECDSA", "BC"); g.initialize(ecSpec, new SecureRandom()); KeyPair pair = g.generateKeyPair(); System.out.println(pair.ge
14 2024-04-03
编程技术问答社区
从ECPrivateKey生成ECPublicKey
我正在尝试生成一个私钥和已知曲线的公共密钥.以下是我的代码: // Generate Keys ECGenParameterSpec ecGenSpec = new ECGenParameterSpec("secp256r1"); KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("ECDSA", "BC"); keyPairGenerator.initialize(ecGenSpec, new SecureRandom()); java.security.KeyPair pair = keyPairGenerator.generateKeyPair(); ECPrivateKey privateKey = (ECPrivateKey) pair.getPrivate(); ECPublicKey publicKeyExpected = (ECPublicKey) pair.getPublic();
10 2024-04-03
编程技术问答社区
如何从pem文件加载公共证书?
我试图从下面的文件中提取res public密钥 -----BEGIN CERTIFICATE----- MIIGwTCCBamgAwIBAgIQDlV4zznmQiVeF45Ipc0k7DANBgkqhkiG9w0BAQUFADBmMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSUwIwYDVQQDExxEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBDQS0zMB4XDTEyMTAzMDAwMDAwMFoXDTE1MTEwNDEyMDAwMFowgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIEwVUZXhhczEQMA4GA1UEBxMHSG91c3RvbjEpMCcGA1UEChMgVmFsZXJ1cyBDb21wcmVzc2lvbiBTZXJ2aWNlcywgTFAxCzAJBgNVBAsTAklUMRkwFwYDVQ
12 2024-04-03
编程技术问答社区
当区块链也使用钥匙时,如何在Azure钥匙库中使用椭圆曲线SECP256K1钥匙?
我想知道如何使用Azure密钥保险库中的SECP256K1键,同时还需要在区块链上创建帐户的键. 必须实现的目标 生成secp256k1键对 使用公共密钥在区块链上创建帐户 存储私有钥匙以钥匙库并将其用于签名目的 尝试#1-生成外部钥匙库和导入 我已经生成了SECP256K1密钥对外部钥匙库.结果,我有私钥和公共密钥作为字符串. 我的想法是在azure sdk的帮助下将私有密钥导入钥匙保险库,以下是wia(使用的ecparameters for.net wia(使用的ecparameters来自microsoft.azure.keyvault.webkey.ecparameters namespace): ) //this part of code is taken from https://www.scottbrady91.com/C-Sharp/JWT-Signing-using-ECDSA-in-dotnet-Core var private
12 2024-04-01
编程技术问答社区