畅谈linux开源项目openssl

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了畅谈linux开源项目openssl相关的知识,希望对你有一定的参考价值。

OpenSSL:开源项目
        三个组件:
            openssl: 多用途的命令行工具;
            libcrypto: 公共加密库;
            libssl: 库,实现了ssl及tls;

        openssl命令:

            openssl version:程序版本号
[[email protected] ~]# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013

            标准命令、消息摘要命令、加密命令

            标准命令:
                enc, ca, req, ...
对fstab这个文件进行加密,保存在fstab.ciphertext
openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext
命令解析如下 -e 用什么算法加密  这里用des3算法加密 -a文本 -salt加一些杂志进去

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

其中-d 表示解密



            对称加密:
                工具:openssl enc, gpg
                算法:3des, aes, blowfish, twofish

                enc命令:
                    加密:~]# openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext
                    解密:~]# openssl enc -d -des3 -a -salt -in fstab.ciphertext -out fstab
                        -des3
                        openssl ?

            单向加密:
                工具:md5sum, sha1sum, sha224sum, sha256sum,..., openssl dgst

                dgst命令:
                    openssl dgst -md5 /PATH/TO/SOMEFILE
                    对fstab进行单向加密
[[email protected] ~]# md5sum  fstab
1f0b4b8720529442b613f57c4979852e  fstab
[[email protected] ~]# openssl  dgst -md5 fstab
MD5(fstab)= 1f0b4b8720529442b613f57c4979852e

                MAC: Message Authentication Code,单向加密的一种延伸应用,用于实现在网络通信中保证所传输的数据的完整性;

                    机制:
                        CBC-MAC
                        HMAC:使用md5或sha1算法

            生成用户密码:
                passwd命令

                    openssl passwd -1 -salt SALT
                    或者
[[email protected] ~]# openssl passwd -1 -salt 12345678
Password:
$1$12345678$xek.CpjQUVgdf/P2N9KQf/

            生成随机数:
                openssl rand -base64|-hex NUM
                例子:
                openssl rand -base64 1000
                openssl rand -base64 16    这里可以当做密码  开玩笑的啊
[[email protected] ~]# openssl rand -base64 16
lftnNYdP1QOsagkWzp9mRA==
                    NUM: 表示字节数;-hex时,每个字符4位,出现的字符数为NUM*2;

            公钥加密:
                加密:
                    算法:RSA, ELGamal
                    工具:gpg, openssl rsautl
                数字签名:
                    算法:RSA, DSA, ELGamal

                密钥交换:
                    算法:dh

                DSA: Digital Signature Algorithm
                DSS:Digital Signature Standard
                RSA:

                生成密钥对儿:
                    openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS

                    # (umask 077; openssl genrsa -out key.pri 2048)

                    提取出公钥:
                    # openssl rsa -in /PATH/FROM/PRIVATEKEY.FILE -pubout


                随机数生成器:
                    /dev/random:仅从熵池返回随机数;随机数用尽,阻塞;
                    /dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数;非阻塞;
备注:
非对称加密:双方两个人拿了一把上古武器,A武器打伤的人只有B武器才能治疗,同理B武器打伤的人也只有A武器才能治好,两把武器都可以伤人也可以救人。但是世间A武器只有一把而B武器却能无限复制生产
对称加密:甲和乙是一对生意搭档,他们住在不同的城市。由于生意上的需要,他们经常会相互之间邮寄重要的货物。为了保证货物的安全,他们商定制作一个保险盒,将物品放入其中。他们打造了两把相同的钥匙分别保管,以便在收到包裹时用这个钥匙打开保险盒,以及在邮寄货物前用这把钥匙锁上保险盒。
上面是一个将重要资源安全传递到目的地的传统方式,只要甲乙小心保管好钥匙,那么就算有人得到保险盒,也无法打开。这个思想被用到了现代计算机通信的信息加密中。在对称加密中,数据发送方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。接收方收到密文后,若想解读原文,则需要使用加密密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密。
   

本文出自 “梁小明的博客” 博客,请务必保留此出处http://7038006.blog.51cto.com/7028006/1844935

以上是关于畅谈linux开源项目openssl的主要内容,如果未能解决你的问题,请参考以下文章

OpenSSL密钥和证书管理

openssl用法详解

开源项目SMSS开发指南

openssl数据加密

程序媛成长-从DBA到研发工程师

OpenRT 非 Linux 内核开源核心网路由器项目