用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.txtc.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/bashmkdir -p your_files_new
for 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 123123
done

利用OpenSSL,用国密SM4算法来给文件加密、解密相关推荐

  1. java break 在if 中使用_java中使用国密SM4算法详解

    前言 上次总结了一下加密算法的分类(加密算法有集中形式,各有什么不同?),现在我们用java语言实现一下SM4:无线局域网标准的分组数据算法.对称加密,密钥长度和分组长度均为128位. ps:我们既可 ...

  2. java mac pos_pos终端mac国密(sm4)算法(java实现)

    概念理解 mac算法是(Message Authentication Codes 消息认证码算法),是含有密钥散列函数算法.主要通过异或运算,再配合其他加密算法实现mac值的运算,用于校验. 实现过程 ...

  3. 国密算法java语言的实现:利用bcprov和hutool库分别实现国密SM4算法工具类,对称密钥

    SM4算法成为行业标准: SM4分组密码算法是2012年3月21日实施的一项行业标准: 2021年6月25日,我国SM4分组密码算法作为国际标准ISO/IEC 18033-3:2010/AMD1:20 ...

  4. 国密SM4算法(简介与C源码)

    国密即国家密码局认定的国产密码算法,即商用密码. 国密算法是国家密码局制定标准的一系列算法.其中包括了对称加密算法,椭圆曲线非对称加密算法,杂凑算法.具体包括SM1,SM2,SM3,SM4等,其中:S ...

  5. C#实现SM2国密签名签验签和加密解密

    java版本已放出 对应的java版本 话不多说,上码. 依赖,BouncyCastle.Crypto.dll ,经测试,可与java版本的bcprov-jdk15on-1.62.jar互通. 在这里 ...

  6. 国密SM4对称算法实现说明(原SMS4无线局域网算法标准)

    国密SM4对称算法实现说明(原SMS4无线局域网算法标准) SM4分组密码算法,原名SMS4,国家密码管理局于2012年3月21日发布:http://www.oscca.gov.cn/News/201 ...

  7. 基于国密SM3算法(openssl接口)密钥派生函数KDF的实现

    前言 最近项目需要使用KDF生成秘钥,对比国密标准(GB_T 32918.4-2016)及网络资料,发现确实没有让我满意的, 自己结合标准和大佬:Heidlyn的帖子<国密SM2算法密钥派生函数 ...

  8. 国密SM4,layui前端 和.net core后台 加密解密 .net加密解密

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.本文做用?? 二.SM4介绍 三.使用步骤 1.前台实现加密 2.后台实现解密 四 总结 前言 第一次分享,我是个 ...

  9. C#.NET 国密SM4加密解密 CBC ECB 2种模式

    注意点: 1.加密时,明文转 byte[] 时,不要用 Encoding.Default,一定要指定编码,如:UTF-8. 解密时,解出的 byte[] 转 string 同样要指定相同的编码. 2. ...

最新文章

  1. 独家 | 人工智能先锋人物杰夫·辛顿说:“深度学习将无所不能”
  2. Vivado中Block Memory Generator v8.3的使用
  3. 零基础建站第一季视频分享
  4. 腾讯招.NET要求以下几点,你准备好了吗?
  5. 三级联动(ajax)
  6. 单片机外部RAM如何用C 语言访问,C51中访问外部RAM的方法
  7. 硬件/操作系统/网络(九):了解常见linux服务器硬件配置
  8. ue4导入倾斜摄影_倾斜摄影如何和bim结合?倾斜摄影数据怎么导?我来告诉你!...
  9. 【Java-语言入门】开发 迷你图书管理器
  10. 已解决_mssql.MSSQLDatabaseException: (2627, b“Violation of PRIMARY KEY constraint ‘PK__TM_DATA___7BDCF2
  11. BZOJ4833: [Lydsy1704月赛]最小公倍佩尔数
  12. 【ICPC模板】卡迈克尔函数
  13. Windows下Java下载与安装,Java第一个程序
  14. Lotti引发的java.lang.StackOverflowError
  15. Ubuntu-C语言下的应用
  16. Freeline使用攻略
  17. 单片机和ARM A的区别
  18. 刚学c++window编程没多久写了一个整人小软件有些bug
  19. 【雷锋网】网友亲历诈骗!安全专家详解:一个验证码如何让你倾家荡产
  20. Trackingnet Ubantu 解压 / linux.zip.001, linux.zip.002, linux.zip.003文件解压方法

热门文章

  1. Ubuntu 屏幕录制噪音处理
  2. 消防装备管理系统(5)详细设计
  3. centos7 rabbitMQ集群搭建
  4. oracle知识点复习总结
  5. 工业计算机刷游戏,我的世界电脑版工业2教程 带你深入了解游戏
  6. CSS 过度中ease与ease-in-out的区别(ease曲线)
  7. tp5 + workerman 实现聊天室
  8. 基因相关性心律失常_哪些心律失常可以做基因检测?
  9. 21年更新版抓取小姐姐短视频教程!最关键的是无水印下载哦。这还学不会?
  10. 【ZYNQ Ultrascale+ MPSOC FPGA教程】第三十二章 PL读写PS端DDR数据