C# 用C解密openSSL加密文件#

C# 用C解密openSSL加密文件#,c#,asp.net,encryption,openssl,asp.net-core-webapi,C#,Asp.net,Encryption,Openssl,Asp.net Core Webapi,我正在移植一些在后端系统上运行的遗留PHP软件。现有应用程序通过调用CLI工具来加密通过apache提供的文件,从而执行OpenSSL 我试图构建的是一个ASP.NET核心WebAPI,具有相同的功能,但不必调用任何CLI工具或将文件保存在磁盘上。API将从存储库中获取数据,对结果进行加密和动态服务。但是,为了保持向后兼容性,我需要确保文件可以由任何一个系统进行加密/解密 对于如何仅使用ASP.NET core 2中可用的内容来解密以前使用OpenSSL加密的文件,我有点不知所措。我知道用于加密

我正在移植一些在后端系统上运行的遗留PHP软件。现有应用程序通过调用CLI工具来加密通过apache提供的文件,从而执行OpenSSL

我试图构建的是一个ASP.NET核心WebAPI,具有相同的功能,但不必调用任何CLI工具或将文件保存在磁盘上。API将从存储库中获取数据,对结果进行加密和动态服务。但是,为了保持向后兼容性,我需要确保文件可以由任何一个系统进行加密/解密

对于如何仅使用ASP.NET core 2中可用的内容来解密以前使用OpenSSL加密的文件,我有点不知所措。我知道用于加密文件的密码短语,但我不明白它与.NET中加密库的要求有什么关系

下面是用于加密的OpenSSL(v0.9.8)命令示例:

openssl enc-e-aes-256-cbc-k abc123-in abc123.xml.tmp-out abc123.xml

如何仅使用ASP.NET core将文件转换回纯文本


如何使用C重新加密,以便能够使用OpenSSL CLI工具进行解密?

当您使用
-k
标志提供密码时,OpenSSL使用一个(不安全的)KDF,通常称为
EVP\u BytesToKey

此KDF用于派生用于加密的密钥和IV

您需要找到此KDF for C#的实现,因为它在.NET中不受支持。从这里,您可以确定IV和密钥,并使用内置的
Aes
类对文件进行解密


回想一下,KDF实际上是非常不安全的,因此如果您打算继续使用OpenSSL,您还应该升级使用它进行加密的方式,以使用
-K
标志和
-iv
标志。

是否有帮助:不幸的是,没有。我遇到的问题是,我不知道密钥/iv实际上应该是什么。我的假设是密钥是passphase的某种形式的散列,我不知道如何推导IV。谢谢!我能用这些信息把它弄明白。