admin管理员组文章数量:1639834
用OpenSSL产生一个随机填充的文件 a.txt
,然后计算这个文件的SHA256摘要。等一下用OpenSSL加密产生 b.txt
再对 b.txt
解密产生c.txt
。计算 c.txt
的SHA256摘要,应该和 a.txt
的一样。
$ openssl rand -out a.txt 102400
$ sha256sum a.txt
2aa2b3258c026866bfbd548549594fa47aa274257bb322f4e6411c4b0442d4bd a.txt
接着,加密 a.txt
,使用SM4算法,CTR分组模式。加密后输出文件 b.txt
到当前目录下。
$ openssl enc -in a.txt -out b.txt -e -sm4-ctr -pbkdf2 -k 123123
参数 -e
表示,这里要对 -in
指定的文件进行加密处理。 -pbkdf2
是指定使用PBKDF2函数对密码进行处理,密码是参数 -k
指定的 123123
。接着计算一下 b.txt
的SHA256摘要。
$ sha256sum a.txt b.txt
2aa2b3258c026866bfbd548549594fa47aa274257bb322f4e6411c4b0442d4bd a.txt
c364d5dc9b1bd78e0538f854c24f0b777ed4d46cd47e0e2d4a5a101163b91220 b.txt
然后是解密,除了输入文件和输出文件需要修改之外,参数 -e
换成 -d
就是解密过程了,其余的参数跟加密的时候一样。
$ openssl enc -in b.txt -out c.txt -d -sm4-ctr -pbkdf2 -k 123123
看下产生的文件的SHA256摘要,可以发现 a.txt
和 c.txt
摘要跟原来的一样。
$ sha256sum a.txt b.txt c.txt
2aa2b3258c026866bfbd548549594fa47aa274257bb322f4e6411c4b0442d4bd a.txt
c364d5dc9b1bd78e0538f854c24f0b777ed4d46cd47e0e2d4a5a101163b91220 b.txt
2aa2b3258c026866bfbd548549594fa47aa274257bb322f4e6411c4b0442d4bd c.txt
除了SM4算法,CTR模式,OpenSSL还可以用别的算法和模式对文件进行加密。输入 openssl enc -list
可以查看能使用的算法和模式。例如还可以用 -aes-128-cbc
参数来加密和解密,如下:
$ openssl enc -in a.txt -out d.txt -e -aes-128-cbc -pbkdf2 -k 123123
$ openssl enc -in d.txt -out e.txt -d -aes-128-cbc -pbkdf2 -k 123123
$ sha256sum a.txt b.txt c.txt d.txt e.txt
2aa2b3258c026866bfbd548549594fa47aa274257bb322f4e6411c4b0442d4bd a.txt
c364d5dc9b1bd78e0538f854c24f0b777ed4d46cd47e0e2d4a5a101163b91220 b.txt
2aa2b3258c026866bfbd548549594fa47aa274257bb322f4e6411c4b0442d4bd c.txt
a959d12133acb54db9cc2825e6fad5de8761e417db05d2bc441c0f8704ff0fe6 d.txt
2aa2b3258c026866bfbd548549594fa47aa274257bb322f4e6411c4b0442d4bd e.txt
批量加密文件的Bash脚本:
#!/bin/bash
mkdir -p your_files_new
for file in your_files/*.*
do
FILE_NAME=`echo $file | cut -d '/' -f 2`
openssl enc -in "your_files/$FILE_NAME" -out "your_files_new/$FILE_NAME" -e -sm4-ctr -pbkdf2 -k 123123
done
版权声明:本文标题:利用OpenSSL,用国密SM4算法来给文件加密、解密 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1729293195a1194425.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论