D-RSA参数的变化取决于您访问证书私钥的方式
我希望有人可以向我解释我犯了一个错误的地方.我一直认为,当我用私钥导出证书并再次导入证书时,私钥是稳定且不会改变的.特别是在计算机上. 现在我被证明是错误的,我不明白. 给定证书z.包含一个私钥PK. 我将此证书导入到计算机C1并计算机C2上. 我在两个上都获得了私钥的参数. Result on C1: Exponent : {1, 0, 1} Modulus : {148, 19, 118, 153...} P : {246, 42, 172, 195...} Q : {153, 253, 180, 23...} DP : {161, 179, 194, 172...} DQ : {63, 22, 42, 14...} InverseQ : {170, 228, 238, 93...} D : {60, 36, 199, 168...} Result on C2: Exponent : {1,
14 2024-04-26
编程技术问答社区
如何在WPF C#应用程序中安全地部署PPK文件?
我有一个C#应用程序,该应用程序连接到SFTP服务器以传输日志文件. 该应用程序通过使用winscp .net组件连接到服务器来实现这一目标. 如何安全地存储.ppk私有密钥文件,以使用户无法将此文件自行访问SFTP? /p> 基于库引用.ppk的方式,不可能避免在运行时间期间在本地磁盘上存储.ppk文件? 预先感谢. 解决方案 通常没有办法隐藏(任何(任何)应用程序从最终用户拥有的任何凭据.您只能使它们很难找到,但是是否值得努力,这是值得怀疑的. 您可以(应该做的)是确保凭据仅授予尽可能少的访问权限. 因此,在您的情况下,请确保帐户使用私钥进行身份验证: 只有写入访问(没有读取访问,甚至列表) 并且具有低磁盘配额 经常(或自动)监视任何异常活动 专门针对Winscp .NET组件的私钥: 是的,它必须存储在磁盘上(即暂时提取到临时文件夹).尽管您可以将私钥加密使用密码.并在应用程序中对密码编码进行硬编码(如果您想要的话,请混
18 2024-04-25
编程技术问答社区
如何解决DecodeRSAPrivateKey的长度不良错误?
我遇到了这个错误: 不良长度 对象引用未设置为对象的实例. 我正在使用此代码: public string RSASign(string data, string PhysicalApplicationPath) { RSACryptoServiceProvider rsaCsp = LoadCertificateFile(PhysicalApplicationPath); byte[] dataBytes = System.Text.Encoding.Default.GetBytes(data); byte[] signatureBytes = rsaCsp.SignData(dataBytes, "SHA256");
14 2024-04-24
编程技术问答社区
x509certificate2中的空私钥
我已经在本地机器商店(WIN7)上安装了私钥. 在C#代码中我这样做: X509Certificate2 cert = null; var store = new X509Store(storeName, storeLocation); store.Open(OpenFlags.ReadOnly); try { var result = store.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false); ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; Ser
32 2024-04-22
编程技术问答社区
将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
26 2024-04-21
编程技术问答社区
如何在C#中加载OpenSSL ECDSA密钥?
我需要将OPENSL专用密钥加载到基于C#的应用程序中. 我用来生成密钥的命令是: $ openssl ecparam -name prime256v1 -genkey -noout -out eckey.pem $ openssl ec -in eckey.pem read EC key writing EC key -----BEGIN EC PRIVATE KEY----- MHcCAQEEIMiuwhV+yI0od5E5pSU6ZGuUcflskYD4urONi1g3G7EPoAoGCCqGSM49 AwEHoUQDQgAEe+C/M6u171u5CcL2SQKuFEb+OIEibjw1rx+S5LK4gNNePlDV/bqu Ofjwc5JDqXA07shbfHNIPUn6Hum7qdiUKg== -----END EC PRIVATE KEY----- openssl pkcs8 -topk8 -nocrypt -in eckey.pem -out ec2.pe
10 2024-04-19
编程技术问答社区
从BouncyCastle X509证书中获取私钥?C#
通常,当我从密钥库中拿出X509Certificate2时,我可以调用.PrivateKey以将证书的私钥作为AsymmetricAlgorithm检索.但是,我决定使用弹性城堡,其实例X509Certificate只有getPublicKey();我看不到一种将私钥从证书中获取的方法.有什么想法吗? 我从我的Windows-my密钥库中获得X509Certificate2,然后使用: //mycert is an X509Certificate2 retrieved from Windows-MY Keystore X509CertificateParser certParser = new X509CertificateParser(); X509Certificate privateCertBouncy = certParser.ReadCertificate(mycert.GetRawCertData()); AsymmetricKeyParameter pubKey
8 2024-04-18
编程技术问答社区
在.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
50 2024-04-17
编程技术问答社区
如何在C#中把存储在HSM中的私钥转换成SignedXml.SigningKey?
我正在尝试使用存储在HSM中的证书的XML签名进行一些演示. 我从此链接中找到了一些有趣的示例: 签名XML文档,并使用X509Certificate2 进行修改,并使用使用PKCS11 Interop包装器内部的证书和键. 在 private static void SignXmlWithCertificate(XmlDocument xmlDoc, X509Certificate2 cert, Session session, String alias) { SignedXml signedXml = new SignedXml(xmlDoc); List template = new List(); template.Add(new ObjectAttribute(CKA.CKA_CLASS, CKO.CKO_PRI
6 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)时,它会带有"不良数据
16 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);
32 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 =
6 2024-04-16
编程技术问答社区
用私钥X.509证书解密
我有一个问题来解密消息usgin X.509证书. 我使用MakeCert生成我的证书,并以此选项: makecert -r -pe -n "CN=MyCertificate" -ss CA -sr CurrentUser -a sha1 -sky signature -cy authority -sv CA.pvk CA.cer ,私人关键是" mypassword". 我的问题是我想解密一条消息加密,并在C#中的先前证书加密. 中 我找到了这个班级 http://blog.shutupandcode.net/?p=6660/a >,但是在 x509decrypt 方法中,私人关键为null. public static byte[] X509Decrypt(byte[] data, string certificateFile, string password) { // load the certificate and decrypt the
10 2024-04-15
编程技术问答社区
向RSACryptoServiceProvider投掷私钥不工作
我有一个x509certificate2变量,我正在尝试将该变量的私钥投放到rsacryptoserviceprovider RSACryptoServiceProvider pkey = (RSACryptoServiceProvider)cert.PrivateKey; 但是我得到了这个例外. system.invalidcastException:'无法施放类型的对象'system.security.cryptography.rsacng'toge'system.security.cryptography.rsacryptoserviceprovider'.' 这是很奇怪的,因为其他答案中的其他答案与我的过程相同,但我有一个例外.有任何解决方案吗? 解决方案 因此,在评论中进行了几次尝试和讨论之后,我提出了以下解决方案. RSA rsa = (RSA)cert.PrivateKey; (cert.Priva
8 2024-04-15
编程技术问答社区
证书库中的证书私钥不可读
我认为我遇到了同样的问题喜欢这个人,但是我不像他/她那样幸运,因为提供的解决方案对我不起作用. 提供的解决方案提供了C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys上的文件( not 在子目录中)和C:\Users\[Username]\AppData\Roaming\Microsoft\Crypto\RSA(以及subdirectories) 但是,由于我希望设置将应用程序安装给所有用户,因此自定义操作在SYSTEM -user下运行,该操作是在C:\ProgramData\Application Data\Microsoft\Crypto\RSA\S-1-5-18中实际创建的文件beeing. . 在运行"正常"应用程序作为admin(右键单击 - >作为admin)执行完全相同的代码时,在C:\Users\[Username]\AppData\Roaming\Microsoft\Crypto\RSA\S-1-5-21-1154
14 2024-04-15
编程技术问答社区
使用RSACng和RsaParameter在导入前无法导出私钥
下一个单元测试导出一个私有键,然后使用RSA实例将其保存在字节数组中,然后加密" HI"消息,在这里一切都很好,但是当它制作RSA2实例并在RSAPARAMETER中导入以前的私人键时,就会出现问题.然后,可以在import私有键后解密消息,但是当您尝试导出rsa2的私人关键时,它会引发异常. 请你能告诉我为什么它不能提取导入的私钥 [TestMethod] public void TestRsa() { var rsa = new RSACng(2048); ///Export private key to arrays var rsaParam = rsa.ExportParameters(true); byte[] yQ = new byte[rsaParam.Q.Length]; byte[] yP = new byte[rsaParam.P.Length];
8 2024-04-14
编程技术问答社区
试图从Windows certstore读取PrivateKey时出现异常
我使用openssl创建了一个私有和公共密钥对,然后我生成了一个.p12文件将其导入Windows CertStore.密钥对和.p12文件是在Windows XP中创建的,我正在尝试在Windows 7中使用它. 我正在尝试从IIS中的Web服务(.svc)中访问密钥. 如果我尝试从独立应用程序中读取私钥,我可以在没有任何问题的情况下完成此操作,但是当我尝试从我的Web应用程序阅读它时,我总是会得到以下例外: 'cert.PrivateKey' threw an exception of type 'System.Security.Cryptography.CryptographicException' 这是整个堆栈: en System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) en System.Security
6 2024-04-13
编程技术问答社区
加密BouncyCastle RSA密钥对并存储在SQL2008数据库中
我具有生成Bouncycastle RSA密钥对的函数.我需要对私钥进行加密,然后将加密的私钥和公共密钥存储到单独的SQL2008数据库字段中. 我正在使用以下内容获取按键: private static AsymmetricCipherKeyPair createASymRandomCipher() { RsaKeyPairGenerator r = new RsaKeyPairGenerator(); r.Init(new KeyGenerationParameters(new SecureRandom(), 1024)); AsymmetricCipherKeyPair keys = r.GenerateKeyPair(); return keys; } 这是返回钥匙的罚款,但是我不确定如何加密私钥并随后将其存储在数据库中. 这是我当前正在使用的加密数据(错误地?): public static byte[] encBy
4 2024-04-13
编程技术问答社区
解密受密码保护的含有私钥的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)
12 2024-04-13
编程技术问答社区
在C#中用SSH.NET的字符串使用 "OPENSSH "私钥文件时,出现了 "无效的私钥文件 "的情况。
我没有SFTP或Openssh的经验.我正在尝试连接到客户端的SFTP上传文件. 我正在使用ssh.net库 - https://github.com/sshnet/sshnet/ssh.net 在我的C#代码中,我在字符串变量中具有私钥: var key = @"-----BEGIN OPENSSH PRIVATE KEY----- // snipped -----END OPENSSH PRIVATE KEY----- "; MemoryStream keyStream = new MemoryStream(Encoding.UTF32.GetBytes(key)); Renci.SshNet.ConnectionInfo conn = new Renci.SshNet.ConnectionInfo( host, port, username, new AuthenticationMethod[] {
6 2024-04-13
编程技术问答社区