首页 > 代码库 > openSSL加密解密

openSSL加密解密

一、前言

  openSSL是套开放源代码的软件库包,实现了SSL与TLS协议。其主要库是以C语言所写成,实现了基本的加密功能。

OpenSSL可以运行在绝大多数类Unix操作系统上(包括Solaris,Linux,Mac OS X与各种版本的开放源代码BSD操作系统),OpenVMS与 Microsoft Windows。它也提供了一个移植版本,可以在IBM i(OS/400)上运作。

openssl有三个部分组成、一是libcryto、这是一个具有通用功能的加密库、里面实现了众多的加密库、二是libssl、这个是实现ssl机制的、他是用于实现TLS/SSL的功能、三是openssl、是个多功能命令行工具、他可以实现加密解密、甚至还可以当CA来用、可以让你创建证书、吊销证书.

二、加密类型:

加密有两种类型:对称加密、非对称加密

这里我们主要研究非对称加密:

[root@magine356-2 ~]# cp /etc/fstab ./  #复制文件到当前目录
[root@magine356-2 ~]# ls
anaconda-ks.cfg  fstab  install.log  install.log.syslog
[root@magine356-2 ~]# cat fstab #查看文件

#
# /etc/fstab
# Created by anaconda on Fri Dec 26 18:09:56 2014
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_magine3562-lv_root /                       ext4    defaults        1 1
UUID=d507dc4f-dcaa-4311-9aa6-3392322b064c /boot                   ext4    defaults        1 2
/dev/mapper/vg_magine3562-lv_home /home                   ext4    defaults        1 2
/dev/mapper/vg_magine3562-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
[root@magine356-2 ~]# openssl enc -des3 -in fstab -e -out fstab.des3 #加密
enter des-ede3-cbc encryption password:  #加密密码
Verifying - enter des-ede3-cbc encryption password:#再次输入密码
[root@magine356-2 ~]# ls
anaconda-ks.cfg  fstab  fstab.des3  install.log  install.log.syslog
[root@magine356-2 ~]# cat fstab.des3 #查看加密文件
.o..架 m.K⒈??.?[??ㄨ.?.Jd 玩y?ヂ二E19?)?.珊Ai+?聚.UG?ZieH
                                                                                  ??!.??G?Y?6?Q%.?@?.Z..G
碍.?苠	:c.	.?晔佣-?]?.M|.??戡Ov.?.
.‘{.#!?E<[^?*2??.c纨4Gs噎???/c>MX5??.
                                                     雷P?Q
                                                            ??.Q0Te现q.讹碗苯??h‘tX军蕙8.-S.??.?.Cr!熳?
                                                                                                                      伊.Q?.?z.O6?.V??w.(肷廴.;.??9?U]?.ㄛJ	蕤?.&U??{]O2??I._帅略x...?A
                                                                     ㄊ膻???.b,?..7p&H冤??
                                                                                                      Q.i*?".?.U饯6.??V<?.g?G?[+揿G?+FN??.?.师ゆ9M.g.P???"?}?廉\裁疔K
                                                 ..???簇-?Q..y..	...?E]?S..1?E
                                                                                                     ..w?.?.?RT.^?V?.←‘u泼..:.??镇?..缕!8?闰.f逄?:?..??WZI???q?笈K5WJK4.?.蜷镧#|=P4Jw??tw??Fd.?).?"??5..松?┅7?墀?m	X?ZaJ+S诛\vmv0.??.⒀?j?:?..R.?. q铙?V谨.
                                                   .?M瘐?Hkm?b?母.{.忸<?.厥.
                                                                                        _岗_
[root@magine356-2 ~]# openssl enc -des3 -in fstab.des3 -d -out fstab1#解密
enter des-ede3-cbc decryption password:#输入加密时候的密码
[root@magine356-2 ~]# cat fstab1#查看解密后的文件

#
# /etc/fstab
# Created by anaconda on Fri Dec 26 18:09:56 2014
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_magine3562-lv_root /                       ext4    defaults        1 1
UUID=d507dc4f-dcaa-4311-9aa6-3392322b064c /boot                   ext4    defaults        1 2
/dev/mapper/vg_magine3562-lv_home /home                   ext4    defaults        1 2
/dev/mapper/vg_magine3562-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

 

 

三、单向加密

   单向加密、也叫hash算法:(One-Way加密)
   用不生成数据指纹的、也叫数据摘要算法、输出是定长的、MD5是128位定长输出、SHA1定长输出160位、他的特性是不会出现碰撞的、每位数据只要有一位不一样就会产生巨大的变化、我们称这种为雪崩效应、常用的算法MD5、SHA1、SHA512、常用工具有sha2sum、md5sum、cksum、openssl dgst。
[root@magine356-2 ~]# openssl dgst -md5 -hex fstab #提取特征码
MD5(fstab)= 653db83e6cdb396784a60b6ee2f9c2aa
[root@magine356-2 ~]# md5sum fstab    #算法一样,结果也会是一样
653db83e6cdb396784a60b6ee2f9c2aa  fstab

openSSL加密解密