社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

bash解密存储在MySQL中的文件

Tom • 3 年前 • 376 次点击  

我在MySQL表中存储了一个xls文件,在保存之前我已经对它进行了加密。

该文件使用PHP加密:

$key='------------'; // not the real key or iv.
$iv = "*********";
$file = file_get_contents('original.xls');
$file = openssl_encrypt($file, "AES-256-CBC", $key, 0, $iv);

然后插入到现有的MySQL表中。

在PHP中,我可以使用select语句下载它,然后使用相同的密钥解密并保存如下:;四:

$file = openssl_decrypt($file, "AES-256-CBC", $key, 0, $iv);
file_put_contents('downloaded.xls', $file);

我现在正试图通过bash脚本实现同样的功能。

通过以下方式从MySQL读取加密数据:

xls=$(mysql -N -u root --password=1234 test -e "SELECT foo FROM bar where id = '1'")

然后我尝试使用以下方法解密并保存它:

key='------------'
iv = "*********"
ivHex=$(printf "%s" "$iv" | hexdump -ve '/1 "%x"')
keyHex=$(printf "%s" "$key" | hexdump -ve '/1 "%x"')
file=$(echo -n $xls| openssl aes-256-cbc -d -a -A -K $keyHex -iv $ivHex)
    
echo $file > bash.xls

不幸的是,这会导致错误“ 命令替换:忽略输入中的空字节 “,文件已保存,但比原始文件小且已损坏。

如果我在MySQL数据库中使用纯文本,那么我可以使用php或bash下载并解密它。

有人能告诉我是什么原因造成的,以及我如何解决它吗?

谢谢

我应该说我试过使用 tr -d '\0' 但这导致了同样的错误信息。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132017
 
376 次点击