OpenSSL基础

1.什么是OpenSSL

在电脑网络上,OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通讯,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。其主要库是以C语言所写成,实现了基本的加密功能,实现了SSL与TLS协议。

OpenSSL由三部分组成:
1. openssl: 多用途的命令行工具;
2. libcrypto: 公共加密库;
3. libssl: 库,实现了ssl及tls;

2.常用加密算法和协议

2.1 对称加密算法

特性:

  • 加密、解密使用同一个密钥
  • 将原始数据分割成为固定大小的块,逐个进行加密

缺陷:

  • 密钥过多
  • 密钥分发困难

常用算法:

  • DES、3DES、AES、Blowfish、Twofish等等

2.2 公钥加密算法

特性:

  • 密钥分为公钥与私钥:
    公钥:从私钥中提取产生;可以公开给所有人
    私钥:通过工具提取,使用者自己留存,必须保证其私密性
  • 特点:用公钥加密的数据,只能使用与之对应的私钥解密,反之亦然
  • 用途:
    数字签名:主要用于让接收方确认发送放的身份
    密钥交换:发送发用对方公钥加密一段对称密钥,并发送给对方
  • 算法:RSA, DSA, ELGamal
    RSA:1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的,RSA就是他们三人姓氏开头字母拼在一起组成的。
    DSA:Digital Signature Algorithm 数字签名算法

2.3 单向加密

特性:定长输出、雪崩效应

  • 雪崩效应指,其中以为发生变化,都会给结果带来翻天覆地的变化

功能:数据完整性

算法:

  • md5:Message Digest 5, 128bits 消息摘要
  • sha1:Secure Hash Algorithm 1, 160bits 安装的hash算法
  • sha224、sha256、sha384、sha512(都为sha家族,224长度为224位,其他意义相同)

2.4 密钥交换

公钥加密:通过获取对方的公钥对数据进行加密,只有对方的私钥才能解密

DH算法(Deffie-Hellman):由两个人名组成

3 公钥加密解密过程图解

4 OpenSSL命令

openssl:默认在Centos 7上面默认安装,可以直接使用,有很多子命令可以分别管理。

子命令分为三类:

  • 标准命令
  • 信息摘要命令(dgst命令)
  • 加密命令(enc子命令)

标准命令:enc,ca,req,genrsa等等

4.1 对称加密

工具:openssl enc
支持的算法:3des,aes,blowfish,towfish

enc命令:
加密:# openssl  enc  -e  -des3  -a  -salt  -in fstab   -out fstab.ciphertext

解密:# openssl  enc  -d  -des3  -a  -salt  -out fstab   -in fstab.ciphertext

4.2 单向加密

工具:openssl dgst,md5sum,sha1sum,sha224sum等等

dgst命令:
openssl  dgst  -md5  /PATH/TO/SOMEFILE

[root@localhost tmp]# openssl dgst -md5 1.txt
MD5(1.txt)= e82ee1c57c41099c988f32776cee6dfc

[root@localhost tmp]# md5sum 1.txt
e82ee1c57c41099c988f32776cee6dfc  1.txt

4.3 生成用户密码

工具:passwd,openssl passwd

openssl passwd -1 -salt $(openssl rand -hex 10)
Password: 
$1$0d9d2f2e$Ty3KtAwkijG5zIU08ixay.

4.4 生成随机数

工具:openssl rand

openssl  rand  -hex |-base NUM

openssl rand -hex 10
6d989f629da63bb40948
openssl rand -base64 10
3JXUSebo5uMlfw==
注意复制base64的随机数时,不要复制后门的“==”号

5 公钥加密

加密算法:RSA, ELGamal
工具:gpg, openssl rsautl

数字签名算法:RSA, DSA, ELGamal

密钥交换算法:dh

DSA: Digital Signature Algorithm 数字签名算法,也可叫DSS
DSS:Digital Signature Standard
RSA:

生成密钥对儿:
openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
(umask 077; openssl genrsa -out key.pri 2048)
 放在括号中,在子SHELL中执行,不影响当前SHELL。
创建时即修改权限
提取出公钥:
openssl rsa -in /PATH/FROM/PRIVATEKEY.FILE -pubout

随机数生成器:
/dev/random:仅从熵池返回随机数;随机数用尽,阻塞;
/dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数;非阻塞;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值