Tag: openssl

如何在C#中实现BN_num_bytes()(和BN_num_bits())?

我将这一行从C ++移植到C#,我不是一个经验丰富的C ++程序员: unsigned int nSize = BN_num_bytes(this); 在.NET中我使用的是System.Numerics.BigInteger BigInteger num = originalBigNumber; byte[] numAsBytes = num.ToByteArray(); uint compactBitsRepresentation = 0; uint size2 = (uint)numAsBytes.Length; 我认为内部运作方式存在根本区别,因为如果BigInt等于: 来源的unit testing结果不匹配: 0 任何负数 0x00123456 我对BN_num_bytes ( 编辑:评论只是告诉我它是BN_num_bits的一个宏) 。 题 你会validation这些关于代码的猜测: 我需要移植BN_num_bytes这是一个宏((BN_num_bits(bn)+7)/8) (谢谢@WhozCraig) 我需要移植BN_num_bits ,它是floor(log2(w))+1 然后,如果存在不计算前导和尾随字节的可能性,那么Big / Little端机器上会发生什么? 有关系吗? 基于Security.StackExchange上的这些答案,以及我的应用程序不是性能关键,我可以使用.NET中的默认实现,而不是使用可能已经实现类似解决方法的备用库。 编辑:到目前为止,我的实现看起来像这样,但我不确定评论中提到的“LookupTable”是什么。 private static int BN_num_bytes(byte[] numAsBytes) { int bits […]

openssl.net rsa加密工作示例需要

有没有人使用OpenSSL.NET进行RSA加密的任何工作示例? 我想使用以PEM格式存储的私钥来加密一些数据。 我创建一个OpenSSL.Crypto.RSA对象并希望使用PrivateEncrypt方法,但它抛出OpenSSLException而没有其他数据(空Errors数组,没有内部exception)。 在使用PrivateEncrypt方法之前,我使用从命令openssl rsa -in private_key.pem -text -noout读取的数据填充所有属性(如PublicModulus,PrivateExponent等) 有谁知道如何将PEM文件读入OpenSSL.Crypto.RSA对象或有任何其他工作加密示例?

如何将openssl_pkey_get_public和openssl_verify转换为C#.NET

PHP代码validation来自银行的iPizza签名: $key = openssl_pkey_get_public (file_get_contents ($preferences[‘bank_certificate’])); if (!openssl_verify ($data, $signature, $key)) { trigger_error (“Invalid signature”, E_USER_ERROR); } 我尝试使用它将其转换为ASP .NET SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider(); X509Certificate2 cert = new X509Certificate2(HttpContext.Current.Request.MapPath(“~/App_Data/bankert.crt”), “”); RSACryptoServiceProvider rsaCryptoIPT = new RSACryptoServiceProvider(); rsaCryptoIPT.ImportCspBlob(cert.RawData); if (!rsaCryptoIPT.VerifyData(data, CryptoConfig.MapNameToOID(“SHA1”), signature)) throw new InvalidOperationException(“Invalid signature from bank “); 但是行rsaCryptoIPT.ImportCspBlob(cert.RawData)会导致Cryptography.CryptographicException无效的提供程序版本: StackTrace: at System.Security.Cryptography.CryptographicException.ThrowCryptogaphicException(Int32 hr) at System.Security.Cryptography.Utils._ImportCspBlob(Byte[] keyBlob, […]

如何在#C中将pkcs8密钥文件转换为DER格式?

如何将pkcs8密钥文件转换为DER格式,以Xml格式获取私钥和​​公钥? 使用openssl我可以使用:openssl pkcs8 -inform DER -in aaa010101aaa_FIEL.key -out aaa.txt aaa010101aaa_FIEL.key是bynary文件 我正在尝试使用Bouncy Castle库,但我有问题要创建新的EncryptedPrivateKeyInfo(… 在java中有一个post要做,但我需要在c#中如何用java读取密码加密密钥?

相当于openssl中的PasswordDeriveBytes

我有C#代码如下: private static string password = “Password”; private static string salt = “SALT”; private static string hashAlgorithm = “SHA1”; private static int iterations = 2; var saltValueBytes = Encoding.UTF8.GetBytes(salt); var passwordKey = new PasswordDeriveBytes(password, saltValueBytes, hashAlgorithm, iterations) … 我需要在Mac中实现相同的function,我才知道Opnessl实现了相关的方法(即libcrypto)。 Opnessl对上述代码的等效方法是什么?

如何使用OpenSSL.Net C#包装器使用AES加密字符串?

我正在尝试将一些加密数据从我的SharePoint站点发送到我公司的PeopleSoft站点。 PeopleSoft人员坚持认为我必须使用OpenSSL库进行加密。 我从SourceForge下载并安装了OpenSSL.Net项目。 出于我的目的,我需要简单地用AES加密字符串。 我知道如何使用System.Security.Cryptography库执行此操作,但我很难将其转换为OpenSSL.Net端。 非常令人沮丧,因为我可以在智能感知中看到我认为我需要的一切! 有没有人使用OpenSSL.Net包装器使用AES执行字符串加密/解密的示例? 谢谢! -缺口

使用OpenSSL.NET和现有密钥解密RSA

我在下面的代码中使用OpenSSL.Net生成OpenSSL RSA公钥和私钥。 但是,我似乎找不到使用给定私钥解密数据的方法。 我知道如果我调用生成密钥然后相应的方法加密和解密数据它工作正常。 但是,如果我尝试从给定公钥的外部源解密某些内容,我该如何使用该密钥进行解密。 注意:请不要给出不使用OpenSSL.NET的示例。 Microsoft加密提供程序比OpenSSL慢得多,并且不符合我的速度要求。 谢谢! public class AsymmetricKeyResult { public string PublicKey { get; set; } public string PrivateKey { get; set; } public AsymmetricKeyResult(string publicKey, string privateKey) { this.PublicKey = publicKey; this.PrivateKey = privateKey; } } public static AsymmetricKeyResult GenerateAsymmetricKeys(int keyLength) { RSA rsa = new RSA(); rsa.GenerateKeys(keyLength, 0x10021, null, null); […]

OpenSSL .NET c#wrapper X509认证

我喜欢在我的c#项目中使用OpenSSL .NET包装器。 我想生成X509认证,但我真的不知道这个程序。 应该包含什么(什么参数)…等等这是我的代码,我在看了一些测试之后做了: OpenSSL.X509.X509Certificate x509 = new OpenSSL.X509.X509Certificate(); OpenSSL.Crypto.RSA rsa = new OpenSSL.Crypto.RSA(); rsa.GenerateKeys(1024, 0x10001, null, null); OpenSSL.Crypto.CryptoKey key = new OpenSSL.Crypto.CryptoKey(rsa); OpenSSL.Crypto.MessageDigestContext digest = new OpenSSL.Crypto.MessageDigestContext( OpenSSL.Crypto.MessageDigest.SHA1); 我想证书应该使用RSA私钥和摘要作为参数,我必须配置它(日期……和其他参数)。 任何人都可以帮助我吗? 完成我的代码? 谢谢。

AES使用OpenSSL进行加密,使用C#.Net进行解密

我需要知道如何在AES-OpenSSL中加密消息并在.NET中解密(C#或VB)或者知道AES-OPENSSL和AES-.NET之间的区别 谢谢! VB.NET中的CODE : Public Function AES_Decrypt(ByVal prm_key As String, ByVal prm_iv As String, ByVal prm_text_to_decrypt As String) Dim sEncryptedString As String = prm_text_to_decrypt Dim myRijndael As New RijndaelManaged myRijndael.Padding = PaddingMode.Zeros myRijndael.Mode = CipherMode.CBC myRijndael.KeySize = 256 myRijndael.BlockSize = 256 Dim key() As Byte Dim IV() As Byte key = System.Text.Encoding.ASCII.GetBytes(prm_key) IV = System.Text.Encoding.ASCII.GetBytes(prm_iv) […]

使用CA证书文件validation远程服务器X509Certificate

我使用OpenSSL生成了CA和多个证书(由CA签名),我有一个.NET / C#客户端和服务器都使用SslStream ,每个都有自己的证书/密钥,启用了相互身份validation并禁用了吊销。 我正在使用RemoteCertificateValidationCallback为SslStreamvalidation远程服务器的证书,我希望我只能在程序中加载CA的公共证书(作为文件)并使用它来validation远程证书,而不是在Windows中实际安装CA.证书商店。 问题是除非我将CA安装到商店中,否则X509Chain不会显示任何其他内容,当我打开其中一个证书的PEM版本时,Windows CryptoAPI shell也会显示。 我的问题是,当RemoteCertificateValidationCallback , X509Certificate和X509Chain似乎没有给我任何工作时,如何使用CA的公共证书文件而不使用Windows证书存储或WCF来validation我的特定CA是否签署了证书?