无法在C#中解密由openssl完成的加密字符串。总是得到Org.BouncyCastle.Security.InvalidKeyException。
我试图在C#中解密openssl通过命令行加密的字符串,但它一直抛出以下例外: Exception thrown: 'Org.BouncyCastle.Security.InvalidKeyException' in BouncyCastle.Crypto.dll An unhandled exception of type 'Org.BouncyCastle.Security.InvalidKeyException' occurred in BouncyCastle.Crypto.dll Not an RSA key 我正在使用RSA加密,这些是我用来生成.pem文件砂加密/解密测试字符串的命令(来自git bash): // Create private key // openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:65537 -out p
10 2024-04-26
编程技术问答社区
在C#中使用OpenSSL对PHP用AES256-GCM加密的字符串进行解密
我正在使用openssl在PHP中加密/解密字符串: function str_encryptaesgcm($plaintext, $password, $encoding = null) { $aes = array("key" => substr(hash("sha256", $password, true), 0, 32), "cipher" => "aes-256-gcm", "iv" => openssl_random_pseudo_bytes(openssl_cipher_iv_length("aes-256-gcm"))); $encryptedstring = openssl_encrypt($plaintext, $aes["cipher"], $aes["key"], OPENSSL_RAW_DATA, $aes["iv"], $aes["tag"], "", 16); return $encoding == "hex" ? bin2he
8 2024-04-26
编程技术问答社区
需要openssl.net rsa加密工作实例
是否有人使用 i创建一个openssl.crypto.rsa对象并想要使用privateCencrypt方法,但是它会引发opensslexception,而没有其他数据(空错误阵列,没有内部异常).在使用privateencrypt方法之前,我用命令读取数据 openssl rsa -in private_key.pem -text -noout 有人知道如何将PEM文件读取到openssl.crypto.rsa对象还是有其他工作加密示例? ? 解决方案 这是Linux上的C/C ++ 生成密钥命令行 openssl genrsa -out privkey.pem 2048 helloword.cpp #include #include #include int main() { char *message = "Hello World";
8 2024-04-25
编程技术问答社区
使用OpenSSL-Net将.der转换为.pem
i有一个.der证书,该证书是二进制编码的,需要以.NET 以编程为.pem文件 此行使用OSX上的OpenSSL提供了正确的输出: openssl x509 -inform der -in cert.crt -out cert.pem ,但我们需要在.net 中做同样的事情 我们尝试了许多解决方案,但完全卡住了. 会像这样的工作: var oc = OpenSSL.X509.X509Certificate.FromDER(bio); 任何建议非常欢迎:) 解决方案 最后,我们能够使用它将DER导入到一个字符串中,然后我们可以将其导出到PEM: var oc = OpenSSL.X509.X509Certificate.FromDER(bio); 这些页面很有用: com/en-us/library/system.security.cryptography.x509certificates.x509certificate2.
12 2024-04-24
编程技术问答社区
在c#中使用公钥加密数据,在php中使用私钥解密数据
我试图通过使用OpenSSL RSA在C#en中加密json字符串. 以下代码在C#: 中 public static string EncryptData(string data) { string key = @"-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/J/txQvYBm5iOHRRRtgdXd5hq DEavxy5OExSiwjJgOgT72A9GX7+E7QYfhUZJTGtf+/J84tuJPx6/Ff1dZa1XRW84 /n5m7fw93CTVwpfRFi0Owenor44zgk6ABSfMlCzwGfdcS8AFiWCFUBpatKte6PaO /WfYK7qz/5faSp3FawIDAQAB -----END PUBLIC KEY-----"; OpenSSL.Crypto.CryptoKey pKey = O
8 2024-04-23
编程技术问答社区
OpenSSL.NET将Ruby的例子移植到C#(来自RailsCasts 143 paypal-security)。
我正在关注 railscasts evisation paypal Security .我正在尝试将此代码移植到c#,并正在使用 openssl.net 也可以在不使用OpenSSL包装库的情况下执行此操作,因为它使用了一些不受管理的代码? 我要移植的红宝石代码是: def encrypt_for_paypal(values) signed = OpenSSL::PKCS7::sign(OpenSSL::X509::Certificate.new(APP_CERT_PEM), OpenSSL::PKey::RSA.new(APP_KEY_PEM, ''), values.map { |k, v| "#{k}=#{v}" }.join("\n"), [], OpenSSL::PKCS7::BINARY) OpenSSL::PKCS7::encrypt([OpenSSL::X509::Certificate.new(PAYPAL_CERT_PEM)], signed
12 2024-04-23
编程技术问答社区
使用 C/C++ 进行客户端和服务器通信,SSL 协议不起作用
我正在尝试使用SSL客户端/服务器示例:我在教程之后创建了我的证书 https://help.ubuntu.com/community/community/openssl .. 这是我的客户端代码: // SSL-Client.c #include #include #include #include #include #include #include #include #include #include #define FAIL -1 //Added the LoadCertificates how in the server-side makes. void LoadCertificates(SSL_CTX
8 2024-04-23
编程技术问答社区
使用 bash 通过 openssl s_client 发送电子邮件
我需要使用Abash脚本发送电子邮件.我知道这个问题和答案. 我已经测试了SSMTP,Mail,Mutt等.openssl s_client似乎有效. 现在,这是我的脚本: echo $1 echo $2 echo $(echo -ne "\0login\0pass" | base64) # This produces the correct output openssl s_client -connect my.mailserver.com:465
22 2024-04-22
编程技术问答社区
如何使用 OpenSSL API 从签名文件中获取签名者的证书信息?
我有一个带有内容类型的"签名data"的CMS信封.如何访问签名证书的信息,例如有效性,主题,发行人等? 给定 的事实 $>openssl cms -verify -signer foo.pem ... 写签名证书,我可以通过其他方式来解析foo.pem所需的信息必需的信息.但是,必须验证签名以获取一个单独的X509对象,然后我可以对此进行解析,以获取所需的证书信息. 我可以从cms中提取其他数据,例如签名时间属性: BIO *in = NULL; CMS_ContentInfo *cms = NULL; STACK_OF(CMS_SignerInfo) *ssi = NULL; CMS_SignerInfo *si = NULL; int ret = 1; in = BIO_new_file(argv[1], "r"); if (!in) goto err; // cms = P
12 2024-04-22
编程技术问答社区
有可能在C#/dotNet 6中解密由openssl enc -k加密的AES密码保护文件吗?
我需要解密来自Linux框的文件,该文件由OpenSSL和AES保护密码. 加密是用 完成的 openssl enc -aes-256-cbc -k 当前,我在Windows上使用以下脚本正确解密了它: "openssl.exe" enc -d -aes-256-cbc -k -in -out 到目前为止,我在项目中包括了OpenSSL EXE和2 DLL. 但是,我想摆脱这些依赖关系,然后直接在C#中解码. 上面的openssl enc -d的c#等效是什么? 无论如何是可能的吗? 我从 https://security.stackexchange.com/worde/20628/where-is-is-is-the-popenssl-aes-aes-recryption openssl eng是一种非标准,并且正在使用给定密码中的随机盐. 受到其他类似主题的启发,我当前的方法总
8 2024-04-22
编程技术问答社区
如何使用OpenSSL.Net C#包装器用AES加密一个字符串?
我试图将一些加密数据从我的SharePoint网站发送到我公司的PeopleSoft网站. PeopleSoft的人们坚持认为我必须使用OpenSSL库进行加密.我已经从sourceforge下载并安装了openssl.net项目. 出于我的目的,我只需与AES加密一个字符串.我知道如何使用system.security.cryptography库来完成此操作,但是将其转换为openssl.net方面很难.非常令人沮丧,因为我可以看到我认为我在Intellisense中需要的一切! 有人使用openssl.net包装器使用AES执行字符串加密/解密的示例? 谢谢! -nick 解决方案 这是对我有用的样本.我通过使用复制纸简化了它,但不重要. 由于与JS库的兼容性,我正在使用文本密码,但是打开SSL本身支持直接使用字节[]键和IV,因此由您决定. 为了将二进制数据切换到字符串中,只需使用 Encoding.UTF8.GetBytes()
6 2024-04-19
编程技术问答社区
RSACryptoServiceProvider和openSSL之间的互操作性
我已经使用.NET class RSACryptoServiceProvider获得了键盘: using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { File.WriteAllText ("PublicKeyOnly.xml", rsa.ToXmlString (false)); File.WriteAllText ("PublicPrivate.xml", rsa.ToXmlString (true)); } 现在,我想与Openssh一起使用它,但是关键格式看起来与众不同. 有人知道如何将公共密钥和私钥转换为Openssh可以使用的文件吗? 谢谢! 解决方案 我真的需要与rsacryptoserviceprovider实现OpenSSL互操作性,以便我可以实现软件许可证密钥系统( ref ). 我需要能够使用OpenSL在Linux中创建私钥和公共密钥,以便以
4 2024-04-18
编程技术问答社区
我如何从一个比特币签名中得到一个ECDSA公钥?... SEC1 4.1.6 曲线上(mod p)场的密钥恢复
更新: git上可用的部分解决方案 编辑:可以在 https://github.com/makerofthings7/makerofthings7/bitcoin7/bitofthings7/-messagesignerverifier 请注意,要验证的消息必须具有Bitcoin Signed Message:\n作为前缀. source1 C#实施中有问题,我可能可以从这个python实现 实际上提出正确的基本58地址似乎有问题. 我有以下消息,签名和基本58地址.我打算从签名中提取键,哈希键,并比较base58哈希. 我的问题是:如何从签名中提取钥匙? (编辑 消息 StackOverflow test 123 签名 IB7XjSi9TdBbB3dVUK4+Uzqf2Pqk71XkZ5PUsVUN+2gnb3TaZWJwWW2jt0OjhHc4B++yYYRy1Lg2kl+WaiF+Xsc= base58比特币地址"哈希" 1
6 2024-04-17
编程技术问答社区
OpenSSL .NET c#包装器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(
10 2024-04-16
编程技术问答社区
如何从.NET中导入RSA公钥到OpenSSL?
我有一个.NET程序和一个Borland Win32程序,需要传递一些密码安全的信息.现在的计划是让.NET应用程序创建一个公共/私钥对,将公共密钥存储在磁盘上,并在.NET程序运行的时间内将私钥保存在内存中. Borland应用程序将从磁盘中读取公共密钥,并使用OpenSL库将数据与公共密钥加密并将结果写入磁盘. 最后,.NET应用程序将读取加密数据并用私钥解密. 从.NET导出密钥并将其导入OpenSSL库的最佳方法是什么? 解决方案 在.NET程序中创建一个新的RSACryptoServiceProvider.将公共密钥导出为RSAParameters,然后将Modulus和Exponent值写入磁盘.这样: RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(4096); //4096 bit key RSAParameters par = rsa.ExportParameters
10 2024-04-16
编程技术问答社区
用OpenSSL进行AES加密,用C#.Net进行解密
我需要知道如何在.NET(C#或VB)中加密AES-OPENSSL中的消息,或者知道AES-OPENSSL和AES-.NET之间有什么区别 谢谢! vb.net中的代码 : 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
6 2024-04-14
编程技术问答社区
如何将一串文本从Base64解码成一个字节数组,并在不破坏数据的情况下获得这个字节数组的字符串属性?
好,所以我有一串文本,在基础64中编码如下: string myText = "abcBASE64TEXTGOESHEREdef=="; // actual string is 381 characters long with trailing '==' 然后,我将字符串从基础64转换为字节数组,如: byte[] decodedFromBase64 = Convert.FromBase64String(myText); 在这一点上,我想获得此字节数组的字符串值,并将其保存在文本文件中,而没有数据丢失或损坏.下面的代码似乎没有这样做: string myDecodedText = Encoding.ASCII.GetString(decodedFromBase64); StreamWriter myStreamWriter = new StreamWriter("C:\\OpenSSL-Win32\\bin\\textToDecrypt.txt"); mySt
8 2024-04-13
编程技术问答社区
使用CA证书文件验证远程服务器X509Certificate
我使用openssl生成了一个CA和多个证书(由CA签名),并且我有一个.NET/C#客户端和服务器都使用SslStream,每个>都有自己的证书/键,启用了相互的身份验证并撤销被禁用. 我正在使用RemoteCertificateValidationCallback SslStream来验证远程服务器的证书,我希望我可以在程序中加载CA的公共证书(作为文件),然后使用它来验证远程证书,而不是然后实际在Windows证书存储中安装CA.问题是X509Chain除非我将CA安装到商店中,否则不会显示其他任何内容,当我打开其中一个证书的PEM版本时,Windows Cryptoapi Shell要么. 我的问题是,我如何仅使用CA的公共证书文件而无需使用Windows证书存储或WCF RemoteCertificateValidationCallback,X509Certificate才能验证我的特定CA已签署证书. X509Chain似乎没有给我任何工作吗? 解决方案
8 2024-04-12
编程技术问答社区
在C#中解密用PHP openssl_encrypt加密的字符串
我有一个客户在PHP中加密以下代码: $password = 'Ty63rs4aVqcnh2vUqRJTbNT26caRZJ'; $method = 'AES-256-CBC'; texteACrypter = 'Whether you think you can, or you think you can\'t--you\'re right. - Henry Ford'; $encrypted = openssl_encrypt($texteACrypter, $method, $password); 导致此加密输出:MzVWX4tH4yZWc/w75zUagUMEsP34ywSYISsIIS9fj0W3Q/lR0hBrHmdvMOt106PlKhN/1zXFBPbyKmI6nWC5BN54GuGFSjkxfuansJkfoi0= 当我尝试在C#中解密该字符串时,它会给我一堆垃圾,这样的垃圾:Z�o�}'*2��I4y�J6S�� ��
6 2024-04-11
编程技术问答社区
使用.NET类对OpenSSL进行加密
我希望创建一个使用与OpenSSL兼容的.NET库的类.我知道有一个openssl.net包装器,但我宁愿避免参考第三方\未管理的代码.我不是在寻找有关这是否是正确选择的讨论,但是有一些原因. 目前,我有以下内容,我相信它应该与OpenSSL兼容 - 它实际上可以实现OpenSSL从OpenSSL文档中所做的工作.但是,即使仅使用此类进行加密和解密,我也会收到以下错误: [CryptographicException] Padding is invalid and cannot be removed. 我已经逐步介绍了代码,并验证了在加密和解密过程中盐\键\ iv都是相同的. 请参阅下面的示例类,并致电"加密"解密.任何想法或指示都将受到欢迎. public class Protection { public string OpenSSLEncrypt(string plainText, string passphrase)
6 2024-04-11
编程技术问答社区