OpenSLL

1、什么是OpenSSL?

OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

2、OpenSSL的组成

OpenSSL三部分组成

1:libcrypto库

2:libssl库

3:openssl 多用途命令行工具

3、OpenSSL加密算法和协议

1)对称加密算法

算法种类:

DES:现代加密算法;8个字节位一块儿,64位加密算法。已被破解

3DES:DES升级版,三个数量级,千倍

AES:高级加密标准:128bit位,192bits位,256bits位,384bits位

对称加密的特性:

机密解密同一个秘钥

加密原始数据分割成固定大小的块,逐个加密

对称加密的缺陷:

秘钥过多

秘钥分发困难

2)公钥加密算法

秘钥的种类

公钥:从私钥中提取产生,可公开给所有人

私钥:通过工具创建,使用者自己留存,必须保证其私密性

特点:用公钥加密的数据,只能使用与之对应的私钥解密,反之亦然

用途:

数字签名:主要用于让接收方确认发送放的身份

密钥交换:发送发用对方公钥加密一段对称密钥,并发送给对方

算法:

RAS

RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年首次公布,当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。

DAS 数字签名算法

3)单向加密

特性:

只能加密不能解密,提取数据指纹(特征)

定长输出;

雪崩效应(数据微小变化,数据验证将会发生巨大变化)

算法:

MD5 固定128位定长输出;

sha1 160位的定长输出

sha224

sha256

sha384

sha512

4)秘钥交换

公钥加密:获取对方公钥,只有对方私钥才能解密

算法采用 DH算法:deffie-hellman

4、公钥加密过程(snow-->bamboo)

snow给bamboo发送数据需要进行以下步骤:

1、snow首先使用单向加密算法算法算出这段数据的特征;

2、并使用自己的私钥将这段特征码进行加密,生成数字签名。并把这段签名附加在数据后面;

3、然后snow使用对称加密算法将数据进行加密,(自己生成的一个一次性的对称秘钥)然后通过bamboo的公钥对对称加密码进行加密,并将其附加数据报文的后面

当bamboo收到snow传输过来的数据后会做如下解密和验证步骤:

1:bamboo使用自己的私钥进行对数据的密码进行解密,这种方法就叫做秘钥交换;

2:bamboo使用解密出来的密码将数据进行解密;

3:bamboo然后使用snow的公钥解密这段数据的加密后的特征码,然后使用同种加密算法算出这段数据的特征码与解密出来的特征码比较是否一致,如果一样,数据完整性得到了保证了;

以上既保证了数据的完整性,保密性,和唯一性,但是如果在网络中有人冒充bamboo,将其公钥给了snow,怎么来解决这一问题?CA第三方公钥合法性效验中心。

5、CA的出现!

证书授证中心,作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。CA中心(GlobalSign)为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。它负责产生、分配并管理所有参与网上交易的个体所需的数字证书,因此是安全电子交易的核心环节。

6、各加密算法命令

1)对称加密

工具:opensslenc, gpg

算法:3des, aes, blowfish, twofish

enc命令:man enc

加密:

openssl enc -e -des3 -a -salt -in filename

-out filename.encryption

解密:

openssl enc -d -des3 -a -salt –in testfile.encryption

-out testfile

2)单向加密

工具:md5sum, sha1sum, sha224sum,sha256sum…

openssl  dgst

dgst命令:

openssl  dgst  -md5 [-hex默认] /PATH/SOMEFILE

openssl  dgst  -md5 testfile

md5sum /PATH/TO/SOMEFILE

3)生成用户密码

工具:passwd,openssl passwd

opensslpasswd-1 -salt SALT(最多8位)

opensslpasswd-1 –salt centos

[[email protected] testdir]# openssl passwd -1 -salt $(openssl rand -hex 10)

Password:

$1$8e0dbb21$N4b97PdbzsQpBdw9zNcAU1

4)生成随机数:man sslrand

openssl  rand -base64|-hex NUM

NUM: 表示字节数;-hex时,每个字符4位,出现的字符数为NUM*2

[[email protected] testdir]# openssl rand -base64 10LMAeXPhRn3m3pg==

[[email protected] testdir]# openssl rand -hex 10

55f6e4a8c9c9ce58c1c0

5)公钥加密:

算法:RSA, ELGamal

工具:gpg, opensslrsautl(man rsautl)

数字签名:

算法:RSA, DSA, ELGamal

密钥交换:

算法:dh

DSA: Digital Signature Algorithm

DSS:Digital Signature Standard

RSA:

生成私钥: # (umask 077;  openssl  genrsa  -out  /PATH/TO/PRIVATE_KEY_FILE  NUM_BITS)

提出公钥: #  openssl  rsa  -in  /PATH/FROM/PRIVATE_KEY_FILE  -pubout

时间: 2024-12-28 16:05:35

OpenSLL的相关文章

php opensll加解密类

<?php $pri = "-----BEGIN RSA PRIVATE KEY-----MIICXQIBAAKBgQCzJc4RrAqaH2Es02XQ91Cqp/JK0yX893JQwFT2eAusnwQ90BwuFQWdcZyKHP+I7XWMZc0qT/V/p51cq1d0OarPsuikth/43qP+1IWTYTv1i967pDnQjXKbnm1dEMvjmS5hi7b/WwNfTi/VdAGLN0nxiHlX4+czjNHA3pCSQ9hCzwIDAQABAoGAIF7aZ3

linux中加密解密以及Opensll建立CA

现在如今个人以及公司对自己的数据以及隐私越来越关注,之前美国斯诺登事件的爆出,又将通讯安全话题引发激烈的讨论.下面我们就来说下linux中的加密解密,以及通讯过程中如何确保通讯的安全. 常见的加密方法有三种:对称加密.单向加密.非对称加密,下面简单说下这三种加密方式. 对称加密:加密和解密使用同一个密钥:依赖于算法和密钥:安全性依赖于密钥,而非算法常见算法有DES:Data Encryption Standard, 56bits.3DES.AES: Advanced Encrpytion Sta

OpenSLL之建立私有CA

一.CA证书的格式 数字证书的格式(x.509 v3): 版本号(version) 序列号(serial number):CA用于惟一标识此证书: 签名算法标志(Signature algorithm identifier) 发行者的名称:即CA自己的名称: 有效期:两个日期,起始日期和终止日期: 证书主体名称:证书拥有者自己的名字 证书主体公钥信息:证书拥有者自己的公钥: 发行商的惟一标识: 证书主体的惟一标识: 扩展信息: 签名:CA对此证书的数字签名: 二.建立自己的CA 使用OpenSS

centos7.2源码安装openssl1.0.2

centos7.2默认是安装了opensll软件包的,但是部署个别服务时,由于版本太低.会影响服务的正常部署.只能使用源码安装提高openssl软件版本. 因为之前有openssl软件包,所以要先移除之前版本: 删除旧版本: yum remove -y openssl openssl-devel 源码安装openssl需要perl环境编译,如果没有perl环境还是需要安装: yum -y install perl perl-devel 现在新版本openssl: wget https://www

Delphi组件indy 10中IdTCPServer修正及SSL使用心得

indy 10终于随着Delphi2005发布了,不过indy套件在我的印象中总是复杂并且BUG不断,说实话,不是看在他一整套组件的面子上,我还是喜欢VCL原生的Socket组件,简洁,清晰.Indy9发展到了indy10几乎完全不兼容,可叹啊.言归正传.在使用IdTCPServer组件的时候发现了他的漏洞,他的OnConnec,OnExecute,OnDisconnect等事件是在其他线程中执行的,通常情况下这没有问题,但是在特殊的情况下会造成问题,如果其他部分的程序写得有问题就会出现漏洞.

无解了吗Zabbix server is not running:the information displayed may not be current

Zabbix server is not running:the information displayed may not be current 安装版本2.4.5 php5.5 mysql5.5 debian7.7 注:网上说要开启php支持openssl扩展,已经开启了呀 方法如下: 1.php.ini文件中查找 allow_url_fopen = On: 让你的php支持 opensll扩展. 2.默认,是没有openssl扩展的,只能重新编译安装. cd /data/php-5.5.2

WebLogicSSL解决苹果IOS itms下载问题

前提: 安装好openssl工具. 通过windows cmd 命令进入 openssl工作文件夹 如解压文件夹为:E:\ openssl-1.0.2-beta1 则工作文件夹为E:\openssl-1.0.2-beta1\inc32\out32dll 通过cmd >cd /d E:\openssl-1.0.2-beta1\inc32\out32dll 建立证书存放文件夹:E:\ssl 以下是使用opensll实现CA并签发证书的过程: 1) 生成CA密钥CA作为一个权威机构,他本身也是使用证书

openssl passwd 手动生成密码

引言:在Linux系统中我们要向手动生成一个密码可以采用opensll passwd来生成一个密码作为用户账号的密码.Linux系统中的密码存放在/etc/shadow文件中,并且是以加密的方式存放的,根据加密方式的不同,所产生的加密后的密码的位数也不同. openssl passwd的作用是用来计算密码hash的,目的是为了防止密码以明文的形式出现. 语法格式: openssl passwd [option] passwd openssl passwd常用的选项如下: -1:表示采用的是MD5

再谈加密-RSA非对称加密的理解和使用

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption