2024-03-21  阅读(60)
原文作者:小小工匠 原文地址: https://artisan.blog.csdn.net/article/details/135992973

202403212040428991.png

Pre

Java - 一文读懂SM1、SM2、SM3、SM4等国密算法

Java - OpenSSL与国密OpenSSL

Java - 数字签名与数字证书


下载源代码(zip)

下载源代码(zip): https://github.com/guanzhi/GmSSL/archive/master.zip

解压缩至当前工作目录

    $ unzip GmSSL-master.zip

编译与安装

Linux平台

    $ mkdir build
    $ cd build
    $ cmake ..
    $ make
    $ make test
    $ sudo make install

安装之后可以执行gmssl命令行工具检查是否成功

    $ gmssl version
    GmSSL 3.1.0 Dev

SM4加密解密

    $ KEY=11223344556677881122334455667788
    $ IV=11223344556677881122334455667788
    
    $ echo hello | gmssl sm4 -cbc -encrypt -key $KEY -iv $IV -out sm4.cbc
    $ gmssl sm4 -cbc -decrypt -key $KEY -iv $IV -in sm4.cbc
    
    $ echo hello | gmssl sm4 -ctr -encrypt -key $KEY -iv $IV -out sm4.ctr
    $ gmssl sm4 -ctr -decrypt -key $KEY -iv $IV -in sm4.ctr

SM3摘要

    $ echo -n abc | gmssl sm3
    $ gmssl sm2keygen -pass 1234 -out sm2.pem -pubout sm2pub.pem
    $ echo -n abc | gmssl sm3 -pubkey sm2pub.pem -id 1234567812345678
    $ echo -n abc | gmssl sm3hmac -key 11223344556677881122334455667788

SM2签名及验签

    $ gmssl sm2keygen -pass 1234 -out sm2.pem -pubout sm2pub.pem
    
    $ echo hello | gmssl sm2sign -key sm2.pem -pass 1234 -out sm2.sig #-id 1234567812345678
    $ echo hello | gmssl sm2verify -pubkey sm2pub.pem -sig sm2.sig -id 1234567812345678
    
    $ echo hello | gmssl sm2encrypt -pubkey sm2pub.pem -out sm2.der
    $ gmssl sm2decrypt -key sm2.pem -pass 1234 -in sm2.der

SM2加密及解密

    $ gmssl sm2keygen -pass 1234 -out sm2.pem -pubout sm2pub.pem
    
    $ echo hello | gmssl sm2encrypt -pubkey sm2pub.pem -out sm2.der
    $ gmssl sm2decrypt -key sm2.pem -pass 1234 -in sm2.der

生成SM2根证书rootcakey.pem及CA证书cakey.pem

    $ gmssl sm2keygen -pass 1234 -out rootcakey.pem
    $ gmssl certgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN ROOTCA -days 3650 -key rootcakey.pem -pass 1234 -out rootcacert.pem -key_usage keyCertSign -key_usage cRLSign
    $ gmssl certparse -in rootcacert.pem
    
    $ gmssl sm2keygen -pass 1234 -out cakey.pem
    $ gmssl reqgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN "Sub CA" -days 3650 -key cakey.pem -pass 1234 -out careq.pem
    $ gmssl reqsign -in careq.pem -days 365 -key_usage keyCertSign -path_len_constraint 0 -cacert rootcacert.pem -key rootcakey.pem -pass 1234 -out cacert.pem

使用CA证书签发签名证书和加密证书

    $ gmssl sm2keygen -pass 1234 -out signkey.pem
    $ gmssl reqgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN localhost -days 365 -key signkey.pem -pass 1234 -out signreq.pem
    $ gmssl reqsign -in signreq.pem -days 365 -key_usage digitalSignature -cacert cacert.pem -key cakey.pem -pass 1234 -out signcert.pem
    
    $ gmssl sm2keygen -pass 1234 -out enckey.pem
    $ gmssl reqgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN localhost -days 365 -key enckey.pem -pass 1234 -out encreq.pem
    $ gmssl reqsign -in encreq.pem -days 365 -key_usage keyEncipherment -cacert cacert.pem -key cakey.pem -pass 1234 -out enccert.pem

将签名证书和ca证书合并为服务端证书certs.pem,并验证

    $ cat signcert.pem > certs.pem
    $ cat cacert.pem >> certs.pem
    $ gmssl certverify -in certs.pem -cacert rootcacert.pem

查看证书内容:

    $ gmssl certparse -in cacert.pem

http://gmssl.org/docs/quickstart.html

202403212040432922.png


Java 面试宝典是大明哥全力打造的 Java 精品面试题,它是一份靠谱、强大、详细、经典的 Java 后端面试宝典。它不仅仅只是一道道面试题,而是一套完整的 Java 知识体系,一套你 Java 知识点的扫盲贴。

它的内容包括:

  • 大厂真题:Java 面试宝典里面的题目都是最近几年的高频的大厂面试真题。
  • 原创内容:Java 面试宝典内容全部都是大明哥原创,内容全面且通俗易懂,回答部分可以直接作为面试回答内容。
  • 持续更新:一次购买,永久有效。大明哥会持续更新 3+ 年,累计更新 1000+,宝典会不断迭代更新,保证最新、最全面。
  • 覆盖全面:本宝典累计更新 1000+,从 Java 入门到 Java 架构的高频面试题,实现 360° 全覆盖。
  • 不止面试:内容包含面试题解析、内容详解、知识扩展,它不仅仅只是一份面试题,更是一套完整的 Java 知识体系。
  • 宝典详情:https://www.yuque.com/chenssy/sike-java/xvlo920axlp7sf4k
  • 宝典总览:https://www.yuque.com/chenssy/sike-java/yogsehzntzgp4ly1
  • 宝典进展:https://www.yuque.com/chenssy/sike-java/en9ned7loo47z5aw

目前 Java 面试宝典累计更新 400+ 道,总字数 42w+。大明哥还在持续更新中,下图是大明哥在 2024-12 月份的更新情况:

想了解详情的小伙伴,扫描下面二维码加大明哥微信【daming091】咨询

同时,大明哥也整理一套目前市面最常见的热点面试题。微信搜[大明哥聊 Java]或扫描下方二维码关注大明哥的原创公众号[大明哥聊 Java] ,回复【面试题】 即可免费领取。

阅读全文