失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 利用OpenSSL 用国密SM4算法来给文件加密 解密

利用OpenSSL 用国密SM4算法来给文件加密 解密

时间:2022-10-06 14:58:05

相关推荐

利用OpenSSL 用国密SM4算法来给文件加密 解密

用OpenSSL产生一个随机填充的文件a.txt,然后计算这个文件的SHA256摘要。等一下用OpenSSL加密产生b.txt再对b.txt解密产生c.txt。计算c.txt的SHA256摘要,应该和a.txt的一样。

$ openssl rand -out a.txt 102400$ sha256sum a.txt2aa2b3258c026866bfbd548549594fa47aa274257bb322f4e6411c4b0442d4bd 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.txt2aa2b3258c026866bfbd548549594fa47aa274257bb322f4e6411c4b0442d4bd a.txtc364d5dc9b1bd78e0538f854c24f0b777ed4d46cd47e0e2d4a5a101163b91220 b.txt

然后是解密,除了输入文件和输出文件需要修改之外,参数-e换成-d就是解密过程了,其余的参数跟加密的时候一样。

$ openssl enc -in b.txt -out c.txt -d -sm4-ctr -pbkdf2 -k 123123

看下产生的文件的SHA256摘要,可以发现a.txtc.txt摘要跟原来的一样。

$ sha256sum a.txt b.txt c.txt2aa2b3258c026866bfbd548549594fa47aa274257bb322f4e6411c4b0442d4bd a.txtc364d5dc9b1bd78e0538f854c24f0b777ed4d46cd47e0e2d4a5a101163b91220 b.txt2aa2b3258c026866bfbd548549594fa47aa274257bb322f4e6411c4b0442d4bd 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.txt2aa2b3258c026866bfbd548549594fa47aa274257bb322f4e6411c4b0442d4bd a.txtc364d5dc9b1bd78e0538f854c24f0b777ed4d46cd47e0e2d4a5a101163b91220 b.txt2aa2b3258c026866bfbd548549594fa47aa274257bb322f4e6411c4b0442d4bd c.txta959d12133acb54db9cc2825e6fad5de8761e417db05d2bc441c0f8704ff0fe6 d.txt2aa2b3258c026866bfbd548549594fa47aa274257bb322f4e6411c4b0442d4bd e.txt

批量加密文件的Bash脚本:

#!/bin/bashmkdir -p your_files_newfor file in your_files/*.*doFILE_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 123123done

如果觉得《利用OpenSSL 用国密SM4算法来给文件加密 解密》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。