2019-2020-1学期 20192415 《网络空间安全专业导论》openssl实践

2019-2020-1学期 20192415

《网络空间安全专业导论》openssl实践

- 任务详情

参考https://www.cnblogs.com/rocedu/p/5087623.html,https://www.cnblogs.com/yangxiaolan/p/6256838.html,两人一组实践附图中的混合加密,提交实践截图

  1. A,B两位同学分别产生一个公私钥对Apub,Apri, Bpub,Bpri,自己把公钥文件发送给对方(A的Apub给B,B的Bpub给A)
  2. A同学准备一个文件demo.txt,内容为AB的学号,A同学用3DES算法对demo.txt加密得到 demo1,加密密钥为K
  3. A同学用B同学的公钥Bpub对K加密得到K1,A同学用自己私钥Apri对K1签名得到K2, A把K2和Demo1发送给B
  4. B同学用A同学的公钥Apub对K2验签得到K1,再用自己的私钥Bpri对K1解密得到K
  5. B同学用K对demo1解密得到demo.txt, 查看demo内容对不对
  6. 提交过程截图

一、openssl常用命令

  1. rsa

  2. rsautl

  3. dgst

  4. enc

二、实践过程

(一)生成A的公私钥

openssl genrsa -out Apri.txt                                #生成私钥
openssl rsa -in Apri.txt -pubout -out Apub.txt              #从公钥中提取出公钥

-in filename:指明私钥文件

-out filename:指明将提取出的公钥保存至指定文件中

-pubout:根据私钥提取出公钥

参考:http://www.178linux.com/48764?utm_source=tuicool&utm_medium=referral

(二) 学号文件加密

openssl enc -in demo.txt -e -des3 -out demo1.txt -p         #用3DES算法对demo.txt加密得到demo1.txt,并打印文件密钥Key

-in filename:指定要利用的文件存放路径

-out filename:指定生成的文件存放路径

-e/d:加密/解密

-des3表示使用的加密算法是3DES

-p:打印文件密钥Key和IV值

参考:https://www.cnblogs.com/gordon0918/p/5317701.html

(三) K的加密与签名

openssl rsautl -encrypt -in K.txt -inkey Bpub.txt -pubin -out K1.txt    #利用B公钥加密K得到K1

-encrypt:用我们的公共密钥对输入的数据进行加密

-in filename:需要加密的文件

-inkey file:指定我们的私有(公有)密钥文件,格式必须是RSA私有(公有)密钥文件

-pubin:表明我们输入的是一个公钥文件(默认输入为私钥文件)

-out filename:输出加密后的文件

参考:

https://www.stackoverflow.wiki/blog/articles/2019/03/17/1552806479704.html

https://blog.csdn.net/sunweixiang1002/article/details/83864727

openssl dgst -out K2.txt -sign Apri.txt K1.txt                          #利用A私钥签名K1得到K2
或
openssl rsautl -sign -inkey Apri.pem -in K1.txt -out K2.txt             #使用rsautl需要密钥的pem形式

参考:https://blog.csdn.net/linan101/article/details/83858095

实践过程中所遇问题

  1. 学号文件加密中-p/P的使用

    [pP]

    加上p参数会打印文件密钥Key和IV值,加上P参数也会打印文件密钥Key和IV值,但不进行真正的加解密操作

    P→显示Key但不执行加密,如果此时重复out,则原本加密的文件会变成空文件

  2. 关于pem与txt

    将公钥、私钥转为文本格式:

    openssl rsa -in root.pem -text -out private.txt(私钥)

    openssl rsa -pubin -in pub.pem -text -out public.txt(公钥)

    参考:https://blog.csdn.net/sunweixiang1002/article/details/81116427

  3. 另附:genssl部分命令的中文详解——https://blog.csdn.net/liao20081228/article/details/77159039

猜你喜欢

转载自www.cnblogs.com/lanvin/p/12104165.html