安全是一个老生常谈但是又是一个不得不谈的问题。在我们日常的生活中无时无刻不在涉及着安全方面的各种隐患,最容易让我们想到的一个就是数据安全的问题,比如说我们有个机密文件不想让任何人看到,只有自己本人可以看,那么怎么办?比如说我们有些艳照(= = # 举例而已) 不想让别人看到怎么办?又比如说我们写给爱慕的人的情书不想让别人看到怎么办?抑或比如说一个公司的机密文档不想让不相关的人看到怎么办?毫无疑问答案就是加密,加密不能保证百分之百的安全,但是至少可以确保在一定程度上的安全。这篇日志就是简单的写一点关于OpenSSL最简单的使用方面的问题。

OpenSSL是一个非常强大的开源的安全加密库,其实就是一大推代码了,是一些具有超高级智商的数学家发明出来的。至今仍然业界被广泛的使用。被集成在各个软件的开发之中。具体请看百度百科:http://baike.baidu.com/view/300712.htm

OpenSSL目前最新的版本是0.9.8o .官方下载地址:ttp://www.openssl.org/source/  从版本的跟更新进度来看就可想而知OpenSSL开发的难度之大,从1998年到现在的2010年长达12年之久,版本也只从最初的0.9.1c到现在的0.9.8o     。。。

接上,从上面下载最新的OpenSSL的源码包之后就进行安装。

安装环境:VMware Workstation 6.0

                    CentOS 5.3

                   OpenSSL 0.9.80.tar.gz

 

首先你可以查看一下系统是否已经安装过OpenSSL, 一般来说系统在你安装完毕之后都是有安装过的。查看命令如下

rpm -qa | grep opensll

不过我们忽略它,因为我们要做的就是当做它事先不存在,我们在一个干净的平台下安装我们的OpenSSL

1.解压 ,命令:tar -zxvf  openssl-0.9.8o.tar.gz

 2.配置,命令:./config --prefix=/opt/openssl  //--prefix就是指定OpenSSL的安装路径,按照自己的意愿 ,一般我们在安装一个软件的时候都要事先看安装说明文档,这样安装才能比较顺利一些。这一步主要是做一些编译前的准备,如检查系统环境,检查依赖关系等,如这一步出错的话那先解决这一步的问题,一般都是一些依赖关系没有满足,解决完之后再进行下一步,否则没法继续。

 3.编译,命令:make   //不要看命令最短,花的时间可是最多的。这一步就是调用gcc进行源代码的编译了。

4.安装,命令:make install  //将编译好的文件复制到我们先前指定的/opt/openssl中。

如上几步就可以将最新版的OpenSSL安装到我们的系统之中了。接下来说一些最最简单的使用。

我们都知道加密算法一般有两种

1.对称加密算法    即是加密的密钥和解密的密钥是一样的,有点加密速度快,缺点是密钥的安全问题,任何在网络上传输的东西都是不安全的。典型的加密算法有DES ,3DES ,AES ,AES256 ,RC4 ,RC5 等

2.非对称加密算法  即是加密的密钥和解密的密钥不是一样的,它会生成一个密钥对,私钥自己保留,公钥在网上进行发布,如果别人要发信息给我,就用我发布的公钥进行加密之后发给我,接着我收到之后即用我的私钥进行解密,因为私钥只有我自己拥有,所以在安全性方面就得到了保证。典型的非对称加密算法有RSA等

注意,用公钥进行加密,私钥进行解密时加密的过程

            用私钥进行加密,公钥进行解密时签名的过程

在OpenSSL中分别进行对称加密算法,非对称加密,签名的过程如下

一.对称加密

首先我自己建立一个要加密的文件如文件名是preenc.txt  内容是hello everyone!

那么命令如下

#/opt/openssl/bin/openssl enc -des3 -k sharpshooter -in preenc.txt -out decenc.key

解释一下:

enc -des3  说明使用的是3DES这个对称加密算法

-in preenc.txt  说明要加密的文件时preenc.txt  

-out decenc.key  说明加密过后的文件名是decenc.txt

-k sharpshooter 说明加密的密钥是sharpshooter

接下来解密上面的文件

#/opt/openssl/bin/openssl enc -des3 -d -k sharpshooter -in decenc.key  -out decrypt.txt

差不多,就是加了个-d参数,意思就是decryption  解密的意思 

二.非对称加密

1.首先产生一个密钥对

  如下明令生成私钥 #/opt/openssl/bin/openssl genrsa -out file 1024   //指定加密的强度时1024bit

  如下命令生成私钥对于的公钥 #/opt/openssl/bin/openssl rsa  -in file pubout >pub.key  //将生成的公钥重定向到pub.key中

2.加密

 #/opt/openssl/bin/openssl rsautl -in sharpshooter.txt -out sharpshooter.pri.key  -inkey pub.key -pubin -encrypt

-inkey  pub.key  说明输入的文件是pub.key

-pubin  说明输入的是公钥

-encrypt  说明解密啦。

3.解密

#/opt/openssl/bin/openssl rsautl -in sharpshooter.pri.key  -out sharpshooter1.txt  -inkey file -decrypt

三.签名

当然也是要产生一对密钥的。

命令都差不多。不写了。下面是签名,私钥加密,公钥解密,具有不可否认性

 #/opt/openssl/bin/openssl rsautl -in sharpshooter.txt -out sharpshooter.sign -inkey file --sign

解签名,即验证可靠性

 #/opt/openssl/bin/openssl rsautl -in sharpshooter.sign -out sharpshooter1.txt  -inkey pub.key  -pubin --verify

 

就这样了,最最简单的对称加密,非对称加密,签名的命令。要是冠希哥当时把他的艳照加个密,就算拿到维修点那里维修,那些维修的人也不可能有本事把艳照拷出来并且破解搞强度密码并且在网上散布搞得现在身败名裂了。害人害己了。