繁体   English   中英

在C#中解密openSSL加密文件

[英]Decrypt openSSL encrypted file in C#

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

我正在尝试构建的是具有相同功能但不必调用任何CLI工具或将文件保存在磁盘上的ASP.NET核心WebAPI。 该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_BytesToKey

该KDF用于导出密钥和用于加密的IV。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM