Openssl 无法解释非英文字符

Openssl 无法解释非英文字符

我正在使用 windows openssl 版本 3.0.1 14。问题是当文件名包含非英文字符时,它无法加密文件,并出现以下错误:

C:\Users\XXX\Desktop>openssl aes-256-cbc -e -salt -in "C:\Users\XXX\Desktop\test\试试.txt" -out "C:\Users\XXX\Desktop\test\ENCRYPTING.txt" -k 12230000000000000000000000000000 -iv F1230000000000000000000000000000
Can't open "C:\Users\XXX\Desktop\test\??.txt" for reading, Invalid argument
B8280000:error:8000007B:system library:BIO_new_file:Unknown error:crypto\bio\bss_file.c:67:calling fopen(C:\Users\lishi\Desktop\test\??.txt, rb)
B8280000:error:10080002:BIO routines:BIO_new_file:system lib:crypto\bio\bss_file.c:77:

我使用的终端是 Windows 命令提示符,我验证了这个中文文件可以在 cmd 中成功打开,方法是:

C:\Users\XXX\Desktop>notepad C:\Users\XXX\Desktop\test\试试.txt

我需要在 openssl 端做哪些配置来支持 utf8?

答案1

如果您使用 MinGW 二进制文件,这可能与 Windows 平台上 UTF-8 的自动转换有关。

OpenSSL 提供了一个环境变量来处理这个问题。从手册中...

OPENSSL_WIN32_UTF8

如果设置,则 UI_OpenSSL(3) 将返回 UTF-8 编码的字符串,而不是当前代码页中编码的字符串,openssl(1) 程序还会将命令行参数从当前代码页转码为 UTF-8。此环境变量仅在 Microsoft Windows 平台上检查。

https://www.openssl.org/docs/manmaster/man7/openssl-env.html

相关内容