实验一 密码引擎-4-国䀄算法交叉测试

一、任务详情

0 2人一组,创建一个文件,文件名为小组成员学号,内容为小组成员学号和姓名
1 在Ubuntu中使用OpenSSL用SM4算法加密上述文件,然后用龙脉eKey解密,提交代码和运行结果截图
2 在Ubuntu中基于OpenSSL产生一对公私钥对(SM2算法)
3 在Ubuntu中使用OpenSSL用SM3算法计算上述文件的Hash值,然后用OpenSSL SM2算法计算Hash值的签名,用龙脉eKey进行验签,提交代码和运行结果截图
4 加分项:在Windows中重现上述过程

二、在Ubuntu中使用OpenSSL用SM4算法加密上述文件,然后用龙脉eKey解密

1.openssl SM4加密

openssl enc -sm4 -in 20201212-20201220.txt -out encrypt.txt -pass pass:12345

image

2.openssl SM4解密

openssl enc -d -sm4 -in encrypt.txt -out decrypt.txt -pass pass:12345

image

3.gmssl解密

gmssl enc -sms4 -d -in encrypt.txt -out decryptGM.txt -pass pass:12345

image

三、在Ubuntu中基于OpenSSL产生一对公私钥对(SM2算法)

https://blog.csdn.net/dong_beijing/article/details/81365060

到openssl的apps文件夹下,输入命令如下所示:

./openssl ecparam -genkey -name SM2 -out priv.key

image

./openssl ec -in priv.key -pubout -out pub.key

image

./openssl ecparam -genkey -name SM2 -out all.key

image

四、在Ubuntu中使用OpenSSL用SM3算法计算上述文件的Hash值,然后用OpenSSL SM2算法计算Hash值的签名,用龙脉eKey进行验签

(一)使用OpenSSL用SM3算法计算上述文件的Hash值

openssl dgst -sm3 20201212-20201220.txt
openssl sm3 -binary -out dgst.txt 20201212-20201220.txt

3b28c5acf24eb2419f0cae47f7509ab7a553e275f59070017bd37ca2700d6c12

image

(二)用sm2的公私钥对进行签名、验签:

https://www.shuzhiduo.com/A/kjdworbBdN/

openssl pkeyutl -sign -inkey all.key -in dgst.txt -out signature.bin

image

openssl pkeyutl -verify -in dgst.txt -sigfile signature.bin -inkey all.key

image

(三)Gmssl下证书的生成

http://www.javashuo.com/article/p-ejpehuti-u.html
https://blog.csdn.net/weixin_30877227/article/details/97106010

1.生成SM2密钥对

gmssl sm2 -genkey -out cakeyGM.pem

image

2.生成SM2自签名证书

gmssl req -new -x509 -key cakeyGM.pem -out cacertGM.crt

image

3.生成SM2用户密钥对

gmssl sm2 -genkey -out uGM.com.key

image

4.生成证书请求csr

gmssl req -new -key uGM.com.key -out uGM.com.csr

image

5.用CA进行签名

gmssl ca -in uGM.com.csr -out uGM.com.crt -cert cacertGM.crt -keyfile cakeyGM.pem

image

6.验证签名

gmssl verify -verbose -x509_strict -CAfile cacertGM.crt uGM.com.crt

image

7.生成证书文件

gmssl pkcs12 -export -in cacertGM.crt -inkey cakeyGM.pem -out lhRootCA.p12

image

五、加分项:在Windows中重现上述过程

六、问题及解决

1.运行不了openssl sm2 -sign private_key.pem -in dgst.txt -out signature.bin

如果您在命令行中输入openssl sm2 -sign private_key.pem -in dgst.txt -out signature.bin,会显示以下错误信息:

Error: 'sm2' is an invalid command.

这是因为OpenSSL并没有提供名为“sm2”的单独命令。SM2算法可以与其他命令一起使用,例如:openssl dgstopenssl pkeyutl等。
要使用SM2签名,请使用以下命令:

openssl dgst -sm3 -sign private_key.pem -out signature.bin dgst.txt

其中,-sm3指定使用SM3哈希算法进行摘要计算,-sign private_key.pem指定使用private_key.pem文件中的私钥进行签名,-out signature.bin指定输出签名结果到signature.bin文件中,最后的dgst.txt是待签名的数据文件。

posted @ 2023-04-15 21:15  油菜园12号  阅读(105)  评论(0编辑  收藏  举报