linux下加密解密之OpenSSL

一、为什么要加密

在网络这个大森林里面,所有的数据传输都是不安全的,在数据传输中必须要给数据加密,以防止被别人劫持盗取



二、数据在网络中怎么传输

数据从发送出去到目的地都经过了哪些步骤?

1、ISO国际标准组织定义了数据在网络传输中的七层模型:数据从 应用层--会话层--表达层--传输层--网络层--数据链路层--物理层 逐层封装传输,数据到达最底层后传送出去,到达目标主机后在从底层往上层传输并逐层解压封装。

2、在TCP/IP定义的四层模型里,数据传输也是一样的道理,应用层--传输层--网络层--物理层。但是这里面并没有定义数据安全方面的内容,在网络的发展过程里,就产生了给数据加密解密的SSL层(ssl并不是真的一个层,只是在应用层与传输层之间给数据规定加载协议的一个标准)。

    我们通过在传输层和应用层之间添加一个SSL层的方式给数据加密。数据由应用层产生和封装,在经过TCP,UDP协议传输之前,用SSL协议对数据流进行二次加工,加密或者解密。

SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为Internet上保密通讯的工业标准。

SSL能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。SSL协议要求建立在可靠的传输层协议(TCP)之上。SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等)能透明地建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。



三、加密解密的分类及对应的算法

1、对称加密:使用同一种算法同一个密码对数据进行加密解密;

算法:DES、3DES、AES、Blowfish、Towfish、IDEA、RC6、CAST5

2、非对称加密之公钥加密:公钥从私钥中提取而来,使用私钥加密的文件,只能使用公钥解密,反        之亦然;

算法:RSA、 DSA、 ELGamal、 DH

3、非对称加密之单向加密:只能加密,不能解密,用于提取数据的特征码。

算法:md5、 sha系列256、384、512、128



四、一次加密通信过程

发送者:

1.使用单向加密算法提取数据特征码

2.使用自己的私钥加密特征码附加在数据后面

3.生成用于对称加密的临时密钥

4.用此临时密钥加密数据和已经使用私钥加密后的特征码

5.使用接收方的公钥加密此临时密钥,附加在对称加密后的数据后放

接受者:

1.使用自己的私钥解密加密的临时密钥,从而获取对称密钥

2.使用对称密钥解密对称加密的数据和私钥加密的特征码密文,从而获得数据和特征码密文

3.使用对方发送的公钥解密特征码密文,从而获得数据特征码

4.使用与对方同样的党项加密算法计算出数据特征码,并与解密而来的特征码进行比较



五、OpenSSL

在linux上OpenSSL是基于密码学的安装包

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

1.组成部分:

(1)libcrypto:加密、解密库文件;

(2)libssl: ssl协议实现

(3)openssl:多用途命令行工具,每种功能都使用专用的子命令来实现

2.openssl命令使用格式

openssl command [options] [csr_file] [options] [crt_file] [options] #

openssl+子命令+选项+参数

3.子命令,输入openssl 回车 回车查看子命令

4.子命令用法,使用 man查看



六、使用openssl加密解密文件

1、对称加密使用openssl enc

(1)加密文件

openssl enc -e CIPHER -a -salt -in /PATH/FROM/FILE -out /PATH/TO/FILE

(2)解密文件

openssl enc -d CIPHER -a -salt -in /PATH/FROM/FILE -out /PATH/TO/FILE

2、单向加密

(1)提取文件特征码

openssl dgst -CIPHER /PATH/TO/FILE

(2)生成用户密码并且手动指定随机数

openssl passwd -1 -salt N随机数

(3)生成随机数

openssl rand -hex|-base64 NUM

(4)生成用户密码并且自动生成随机数

openssl passwd -1 -salt $(openssl rand -hex|-base64 NUM)

3、公钥加密

(1)生成私钥

openssl genrsa -out /PATH/TO/PRIVATE_KEY_FILE NUM_BITS

#(umask 077;openssl genrsa -out /PATH/TO/PRIVATE_KEY_FILE NUM_BITS)给私钥文件加权限

(2)提取公钥

openssl rsa -in /PATH/FROM/PRIVATE_KEY_FILE pubout



总结:这些只是使用openssl进行加密解密的基础,学linux必须要对其进行了解和掌握

openssl enc -e|-d -des3 -a -salt -in .. -out ..(-a表示生成base64格式,-salt加入随机码)

openssl dgst -md5|-sha ..(对文件提取特征码)

openssl passwd -1 -salt ..(生成用户密码-1表示使用md5算法)

openssl rand -hex|-base64 ..(从熵池中提取随机码)

openssl genrsa -out .. num_bits(按多少字节生成私钥文件)

openssl rsa -in .. -pubout -out .. (从私钥文件中提取公钥并输出到新文件里)

时间: 2024-11-08 21:19:04

linux下加密解密之OpenSSL的相关文章

Linux之加密解密基础、openssl及CA基础应用

加密解密基础简介 数据在网络中传输过程中要保证三个要点: (1)数据的完整性:防止数据在传输过程中遭到未授权用户的破坏或篡改 (2)数据的机密性:防止文件数据泄漏给未授权用户从而让其利 (3)数据的可用性:保证授权用户能按需访问存取文件数据 因此加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密).加密技术包括两个元素:算法和密钥.算法是将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可理解的密文的步骤,密钥是用来

Linux下C语言使用openssl库进行加密

在这里插一小节加密的吧,使用openssl库进行加密. 使用MD5加密 我们以一个字符串为例,新建一个文件filename.txt,在文件内写入hello ,然后在Linux下可以使用命令md5sum filename.txt计算md5值 ==> b1946ac92492d2347c6235b4d2611184  .虽然写入的是hello这5个字符,但是我们使用命令xxd filename.txt后可以看出文件结尾处会有个0x0a这个回车符.所以在下面的代码中才会有\n. 1 //打开/usr/

加密/解密&利用OpenSSL构建私有CA

在互联网安全及个人隐私状况日益严峻的今天,加密技术变得尤为重要并且不可或缺.在密码雪中,加密是指将明文信息隐匿起来,使之在缺少特殊信息时不可读.本文所讲的主要是在互联网传输数据时所用的加密方式.我们都知道OSI&TCP/IP网络参考模型,通常我们会把这两个模型分为通信子网和资源子网两部分,但是在构建网络的初期,信息从发送端送达到接受端都非常困难所以在设计模型之初并没有考虑过多的安全因素,以至于通信子网和资源子网都没有涉及到数据加密的内容.为了解决这个问题,网景公司在资源子网和通信子网之间添加了半

linux CA 加密解密技术

一.基础知识 对称加密: 加密和解密方使用同一个密钥,用来解决数据机密性,但是密钥通过何种方式传递给对方不容易实现: 公钥加密: 密钥是成对出现的,分别为Secret key(密钥)和Public key(公钥)公钥加密必须使用与其相对应的 私钥进行解密并且公钥是从私钥中提取出来的,有私钥可以知道公钥是什么,但是知道公钥是不能知 道私钥的,公钥是公开的,而私钥是不公开的,但是公钥加密比对称加密慢3个数量级(1000倍), 加密速度相当的慢,所以单独用此加密方式也比较困难:公钥加密功能: 单向加密

Linux之加密解密基础技术

下文主要介绍了什么是加密解密:为何要用到加密解密技术:加密解密技术能够为我们带来什么样的好处:常见的几种加密解密技术介绍以及Linux中的openssl. 一.什么是加密,解密 加密技术是一种常用的安全保密手段,利用各种技术手段把重要的数据进行加密传送:再用对应的技术手段进行解封,该过程的逆过程就称为解密.这里用一个不太恰当的例子说一下:也就好比你去办一张银行卡,需要你设置一个密码,就可以理解成在为这张银行卡做一个加密的操作:用银行卡到提款机取钱需要你输入密码,这就是一个解密的操作. 二.为什么

linux关于加密解密技术基础、KPI及创建私有CA

linux加密和解密技术基础.KPI及创建私有CA 一.加密方式分为:1.对称加密:加密和解密使用同一个密钥:      对称加密:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,在对称加密算法中常用的算法有:DES. 3DES.TDEA.AES.    Blowfish.Twofish          IDE.ARC6.CAST5等.    特性:      1.加密.解密使用同一个密钥:      2.强原始数据分割成固定大小的块,逐个进行加密

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

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

解决Linux下AES解密失败

前段时间,用了个AES加密解密的方法,详见上篇博客AES加密解密.加解密方法在window上测试的时候没有出现任何问题,将加密过程放在安卓上,解密发布到Linux服务器的时候,安卓将加密的结果传到Linux上解密的时候却总是失败,让用户不能成功登录,经过检查,测试后,发现AES在Linux上解密失败,出现错误: javax.crypto.BadPaddingException: Given final block not properly padded 现在来回顾下自己的解决思路: 加密过程是在

加密解密与OpenSSL建立私有CA

安全规范: 1)NIST规定的数据安全性标准: ①保密性:数据保密性:隐私性: ②完整性:数据完整性:系统完整性 ③可用性:数据与服务随时可用 2)OSI,X.800:定义了安全攻击,安全机制,安全服务 ①安全攻击 被动攻击:监听 主动攻击:报文伪装.重放.消息篡改.拒绝服务(将有限资源耗尽,使得正常资源无法访问DDOS) ②安全机制 加密/解密,数字签名,访问控制,数据完整性保证,认证交换,数据填充,路由控制,人为公证 ③安全服务 认证 访问控制 数据保密性: 连接保密性 无连接保密性 选择域