OPENSSL基础使用

实验目的

掌握常见的密码学算法应用,包含des aes md5 rsa等掌握常见的密码学算法应用,包含des AES MD5 RSA等

实验环境

一台Centos 7.2 已经安装openssl组件

实验原理

openssl是Linux内置的一款开源工具,实现了常见的密码算法与应用。通过openssl操作,完成各种密码算法的应用。

实验步骤

创建一个文件,用于被加密,文件内容为12345,文件名为test.txt

echo 12345 >test.txt

image-20240827155328814

一、对称加密

1、使用rc4加解密

加密
openssl enc -e -rc4 -in test.txt -out test_rc4.txt

image-20240827155447732

解密
openssl enc -d -rc4 -in test_rc4.enc -out test_rc4.dm

image-20240827155613980

2、使用AES加解密

openssl enc -e -aes-128-cbc -a -salt -in test.txt -out test_aes128.enc
  • -a:这个选项表示以Base64编码格式输出加密后的数据。Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于加密后的数据可能包含无法直接在文本文件中存储的字符(如控制字符或二进制零),所以通常会用Base64编码来安全地表示这些加密数据。
  • -salt:这个选项指示OpenSSL在加密过程中使用一个随机的盐值(salt)。盐值是一个随机数据块,与加密密钥结合使用来增加加密的安全性。每次加密相同的数据时,如果使用了不同的盐值,就会产生不同的加密输出,这有助于抵抗某些类型的攻击,如字典攻击。

image-20240827161043204

解密

openssl enc -d -aes-128-cbc -a -salt -in test_aes128.enc -out test_aes128.d

image-20240827161119743

3、使用3DES加解密

加密
openssl enc -e -des3 -a -salt -in test.txt -out test_des3.enc

image-20240827161201044

解密
openssl enc -d -des3 -a -salt -in test_des3.enc -out test_des3.d

image-20240827161236192

二、非对称加密

1、RSA加解密码

生成RSA密钥对

openssl genrsa -out rsa.key 1024
image-20240827161300110
敲错了。。。导出公钥

openssl rsa -in rsa.key -pubout -out rsa_pub.key
  • -pubout:这个选项告诉openssl rsa命令执行提取公钥的操作。默认情况下,openssl rsa命令用于处理私钥,但加上-pubout选项后,它会从私钥中提取出对应的公钥。

image-20240827161412254

使用公钥加密文件

openssl rsautl -encrypt -in test.txt -inkey rsa_pub.key -pubin -out test_rsa.enc

-pubin:这个选项告诉openssl rsautl命令输入密钥是一个公钥。在大多数情况下,当使用-inkey选项时,OpenSSL会尝试根据密钥的内容自动判断它是公钥还是私钥。然而,在某些情况下(尤其是当密钥文件没有标准的公钥或私钥头部时),明确指定-pubin可以避免混淆。

image-20240827161520755

使用私解解密文件

openssl rsautl -decrypt -in test_rsa.enc -inkey rsa.key -out test_rsa.c

image-20240827162053421

使用公钥解密报错

openssl rsautl -decrypt -in test_rsa.enc -inkey rsa_pub.key -out test_rsa.c

image-20240827162110243

实验总结

通过实验的openssl 实现对称加解密与非对称加解密两种基线的加解密功能。
思考对称与非对称加解密码的流程上有何不同?为什么?