OpenSSL(系列)

发布时间 2023-12-24 18:11:11作者: 20231301周子昂

配置安装Homebrew

Arm版本:

方法一

  1. 插件Homebrew目录
    sudo mkdir /opt/homebrew
  2. 同步brew.git库
    下载brew.git库文件到 /opt/homebrew目录:
    sudo git clone https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git /opt/homebrew
  3. 添加环境
    使终端可以在任意位置调用Homebrew
    创建软链接到系统:
    sudo ln -sf /opt/homebrew/bin/brew /opt/homebrew/bin/brew
  4. 创建并同步Homebrew-core库
    创建Homebrew-core目录,并git Homebrew-core库文件
    sudo mkdir -p /opt/homebrew/Library/Taps/homebrew/homebrew-core
    sudo git clone https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git /opt/homebrew/Library/Taps/homebrew/homebrew-core
  5. 创建并同步Homebrew- cask库
    sudo mkdir -p /opt/homebrew/Library/Taps/homebrew/homebrew-cask
    sudo git clone https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask.git /opt/homebrew/Library/Taps/homebrew/homebrew-cask

    6.提权
    sudo chown -R $(whoami) /opt/homebrew sudo chown -R $(whoami) /opt/homebrew/Cellar sudo chown -R $(whoami) /opt/homebrew/var/homebrew
  6. 查看
    brew -v

方法二

脚本配置安装(安全性较低,但是简单方便)
/bin/bash -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

课上测试1

1.创建一个名为 sn.txt 的文件,并将8位学号写入该文件中
echo -n "20231301" > sn.txt

2.使用 SM3 算法计算学号的哈希值并将其存入 sn.sm3 文件中
openssl sm3 -binary -out sn.sm3 sn.txtt

3.使用 od 命令查看 sn.sm3 文件的内容
od -t x1 -An sn.sm3

  1. 使用 echo 命令打印学号,并使用 OpenSSL 工具计算哈希值,然后比较与文件中的哈希值是否一致。
    echo -n "20231301" | openssl sm3 -binary | od -t x1 -An

课上测试2

1.使用 OpenSSL 工具产生两个16字节的随机数,并将它们分别保存到 key.bin 和 iv.bin 文件中。
openssl rand 16 > key.bin
openssl rand 16 > iv.bin

2.使用 SM4 算法将 sn.txt 文件加密,并将加密结果存入 sn.enc 文件中
openssl sm4 -in sn.txt -out sn.enc -e -K $(cat key.bin) -iv $(cat iv.bin)

3.使用 SM4 算法将 sn.enc 文件解密,并将解密结果存入 sn2.txt 文件中。
openssl sm4 -in sn.enc -out sn2.txt -d -K $(cat key.bin) -iv $(cat iv.bin)

4.使用 diff 命令比较 sn.txt 和 sn2.txt 文件的内容是否相同
diff sn.txt sn2.txt

如果 sn.txt 和 sn2.txt 的内容相同,该命令将不会输出任何信息。否则,它将显示两个文件之间的差异。

课上测试3

1.生成一对1024位的RSA公私钥对

2.导出公钥和私钥
已经在第一步中生成了private_key.pem和public_key.pem两个文件,它们分别包含了私钥和公钥。

3.使用私钥对sn.sm3文件进行签名并生成snsm3.sig文件

4.使用公钥对snsm3.enc文件进行验签并生成snsm3.veri文件
openssl dgst -verify public_key.pem -keyform pem -signature snsm3.sig -out snsm3.veri snsm3.enc

5.比较snsm3.veri和sn.sm3文件的内容是否一致
diff snsm3.veri sn.sm3

如果 snsm3.veri 和 sn.sm3 的内容相同,该命令将不会输出任何信息。否则,它将显示两个文件之间的差异。

openssl实践

1.A同学生成SM2公私钥对
openssl ecparam -genkey -name sm2 -out April.pem

openssl ec -in April.pem -pubout -out Apub.pem

2.B同学生成SM2公私钥对
openssl ecparam -genkey -name sm2 -out Bpri.pem

openssl ec -in Bpri.pem -pubout -out Bpub.pem

3.A、B同学互传公钥

4.A同学使用SM4算法对demo.txt加密得到Demo1,加密密钥为K
生成一个SM2私钥:
openssl rand -out sm4-key.bin 16
从私钥文件中提取SM2公钥:
openssl enc -sm4-ecb in demo.txt -out Demo1 -K $(xxd -p -c 16 <sm4-key.bin)

5.A同学使用B同学的公钥Bpub对K进行加密得到K1,并使用自己的私钥Apri对K1进行签名得到K2,然后将K2和Demo1发送给B


6.B同学使用A同学的公钥Apub对K2进行验签得到K1,并使用自己的私钥Bpri对K1进行解密得到K


7.B同学使用K对Demo1进行解密得到demo1.txt,并查看demo1内容是否正确