Java教程

实验一-密码引擎-商用密码算法实现2-交叉测试(选做)

本文主要是介绍实验一-密码引擎-商用密码算法实现2-交叉测试(选做),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

实验一-密码引擎-商用密码算法实现2-交叉测试(选做)

任务详情

把自己实现的商用密码算法SM2,SM3,SM4与OpenSSL交叉验证

  1. 自己实现的SM3算法的结果与OpenSSL的结果比对是否一致

  2. 自己实现的SM4算法加密的,OpenSSL的SM4算法解密,或者相反

  3. 自己实现的SM2算法签名,OpenSSL的SM2算法验签,或者相反

1 提交代码链接和运行结果截图

2 记录实现过程中的问题和解决方案

3 推荐发博客提交链接

码云链接

https://gitee.com/ruiruiruiruirui/xx/tree/master/smx

一、自己实现的SM3算法的结果与OpenSSL的结果比对是否一致

在Ubuntu下编程计算我的学号的sm3哈希值

gcc *.c -o 20191220sm3

LWCCPU.png

在windows下使用openssl计算

dgst -sm3 20191220.txt

发现结果并不一样,其实是要用-m32 生成32位机器的汇编代码

LWCi24.png

输入指令

gcc -m32 *.c -o 20191220sm3

编译运行

得到一样的sm3哈希值

二、自己实现的SM4算法加密的,OpenSSL的SM4算法解密,或者相反

在Ubuntu中原文密钥和加密后如下

LWCKPO.png

用openssl重现SM4加密,加密的原文和密钥均为0123456789abcdeffedcba9876543210

将原文改成十六进制文件再进行操作,使用winhex

LWCwRg.png

LWCai8.png

openssl enc -sm4-ecb -in 20191220sm4_1.txt -K 0123456789abcdeffedcba9876543210 -out 20191220sm4_2.txt

查看20191220sm4_2.txt

加密成功

LWCcd0.png

进行解密

openssl enc -d -sm4-ecb -in 20191220sm4_2.txt -nopad -K 0123456789abcdeffedcba9876543210 -out 20191220sm4_4.txt

解密成功

LWChz4.png

但是多出了一行,分析后认为是文件结束符也被加密了

所以在指令中再加入参数 -nopad 不使用补齐

加密

openssl enc -sm4-ecb -in 20191220sm4_1.txt -nopad -K 0123456789abcdeffedcba9876543210 -out 20191220sm4_3.txt

再进行解密

openssl enc -d -sm4-ecb -in 20191220sm4_3.txt -nopad -K 0123456789abcdeffedcba9876543210 -out 20191220sm4_4.txt

成功解密

LWCOJO.md.png

三、自己实现的SM2算法签名,OpenSSL的SM2算法验签,或者相反

LZ00Sg.png

LZ0RYT.png

这篇关于实验一-密码引擎-商用密码算法实现2-交叉测试(选做)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!