Linux安全机制之文件加密解密

http://www.linuxidc.com/Linux/2015-05/117253.htm

【何为加密解密】
    加密:就是把明文转换成密文的过程,是使用某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。
    解密:就是把密文转换成明文的过程,授权用户通过使用与密文加密相对应的算法转译出明文。
【常用密码算法和协议】


    对称加密:同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密;
    常用的对称加密算法:DES (56)、3DES、AES (128,192,256,384,512)、Blowfish、Twofish、IDEA、RC6、CAST5等 ; 
    公钥加密:也叫非对称加密,是由对应的一对唯一性密钥(即公开密钥和私有密钥)组成的加密方法。
    常用的公钥加密算法:RSA, DSA, EIGamal等;
    单向加密:是不可解密的加密方法,是非可逆的;
    常用的公钥加密算法:MD5、SHA1、SHA256、SHA384、SHA512等;
    认证协议:
        IKE协议(英特网密钥交换协议):常用来确保虚拟专用网络VPN与远端网络或者宿主机进行交流时的安全;
        SSL( 安全套接字层): 网络通信提供安全及数据完整性的一种安全协议。
        TLS(传输层安全): 是仿照SSL制定,用于在两个通信应用程序之间提供保密性和数据完整性。


【加密解密过程】

Linux安全机制之文件加密解密

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

    1、查看openssl版本信息:

openssl version
[root@CentOS6 ~]# openssl version 
OpenSSL 1.0.1e-fips 11 Feb 2013 #版本信息,在我们进行打补丁或版本升级时都会先查看下;

    2、对文件进行对称加密:
加密:openssl enc -des3 -a -salt -in /path/from/somefile -out /path/to/somecipherfile
解密:openssl enc -d -des3 -a -salt -in /path/from/somecipherfile -out /path/to/somefile
123456789101112131415161718192021222324252627 root@CentOS6 tmp]# openssl enc -des3 -a -salt -in /tmp/fstab -out /tmp/fstab.sc  
#-des3:为加密算法(可以根据自己需要选择); 
#-a:对加密后的数据进行base64编码,或解密前,先对数据进行base64解码。 
#-salt:加盐,这是一个神奇的选项,加盐后,相同的明文可以得到不同的密文。默认情况下,盐值是随 
#机生成的,可以使用-S选项明确指定盐值。 
#-in:指定要加密的文件; 
#-out:指定加密后输出的文件; 
enter des-ede3-cbc encryption password: #要求用户输入加密密码; 
Verifying - enter des-ede3-cbc encryption password: #密码确认; 
[root@CentOS6 tmp]# cat /tmp/fstab.sc #下面就是生成的密文了,是不是已经无法懂啦~~ 
U2FsdGVkX188aCeQ1I9XJ4wbVbQtjOUWE3kA7z9qEKwthOgV7hwYoASba6F+24rG 
9Icl+4BXyZ1vw+mLcpEaAQotxCpLZB7sYMTpd71jpmUEJkDTYRsP4uLwlFnMPA1G 
#----略--- 
7N9JdTKhByxLwOJaBZxQMFCRoyF8ri2HGE/6tlxuq31RniwOUxcOZ/eux3iXDf2J
xFafl6AbzQgX1OztM+454w== 
[root@CentOS6 tmp]# openssl enc -d -des3 -a -salt -in /tmp/fstab.sc -out /tmp/fstab1 #-d:解密; 
enter des-ede3-cbc decryption password: #输入加密使用的密码,输入正确就可以解密了; 
[root@CentOS6 tmp]# cat fstab1 #解密出来了!! 

# /etc/fstab 
# Created by anaconda on Mon Mar 16 13:43:08 2015 

# 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_centos6-lv_root /                      ext4    defaults        1 1 
#--略--

    3、对文件单向加密:
      openssl dgst [-md5|-sha1] [-out /path/to/filename] /path/from/somefile
[root@CentOS6 tmp]# openssl dgst -md5 /tmp/fstab #使用md5算法进行单向加密,不用-out指定输出 
#文件,默认输出至桌面; 
MD5(/tmp/fstab)= 1dc8426edc4278081c898bdf9806682c 
[root@CentOS6 tmp]# md5sum  /tmp/fstab  #用md5sum工具给文件加密; 
1dc8426edc4278081c898bdf9806682c  /tmp/fstab
#你可以发现不管你使用什么工具来单向加密文件同一文件,只要算法一样其输出结果都一样。

    4、对用户密码进行hash:
      openssl passwd -1 [-salt SALT]
          -1:表示使用的hash算法是MD5;
          -salt SALT:输入作为salt的字符串;
[root@CentOS6 tmp]# openssl passwd -1 #使用md5来hash密码; 
Password: #输入要hash的密码; 
Verifying - Password:  #确认输入; 
$1$mgYuAGde$OHKciTF3gV9YZKMZUPyW./  #hash后的结果; 
[root@CentOS6 tmp]# openssl passwd -1 -salt aa 
Password:  
$1$aa$9dcbvI.WtNPFK0cdGuO/W0

    5、生成随机数:

      openssl rand -base64|-hex  num 
      -base64|-hex:对随机字符串进行base64编码或用hex格式显示;
      num:指定产生指定长度num个bytes的随机字符;
[root@CentOS6 tmp]# openssl rand -hex 5 #表示随机生成5bytes的随机数,并用base64编码显示; 
c0a6f4c166 
[root@CentOS6 tmp]# openssl rand -base64 5 #表示随机生成5bytes的随机数,并用hex编码显示; 
McpaNQI=


    6、生成私钥:
      (umask 077; openssl genrsa  -out /path/to/keyfile NUMBEROFBITS ) 
      (命令):表示()里面的命令是在子shell中运行,不影响当前的shell;
        NUMBEROFBITS :密钥长度(单位bit);
[root@CentOS6 tmp]# (umask 077;openssl genrsa -out /tmp/key 32) 
Generating RSA private key, 32 bit long modulus 
.+++++++++++++++++++++++++++ 
.+++++++++++++++++++++++++++ 
e is 65537 (0x10001) 
[root@CentOS6 tmp]# cat /tmp/key  #查看生成的密钥文件; 
-----BEGIN RSA PRIVATE KEY----- 
MCwCAQACBQCyIttNAgMBAAECBGc3UKUCAwDsewIDAMDXAgMAwQ0CAkWhAgI/Og== 
-----END RSA PRIVATE KEY-----

    7.提取公钥:
      openssl rsa -in /path/from/private_key_file -pubout -out /path/to/Pub_key_file  
[root@CentOS6 ~]# openssl rsa -in /tmp/key -pubout #不指定输出到文件,直接把公钥输出到屏幕;
writing RSA key 
-----BEGIN PUBLIC KEY----- 
MCAwDQYJKoZIhvcNAQEBBQADDwAwDAIFALIi200CAwEAAQ== 
-----END PUBLIC KEY----- 
[root@CentOS6 ~]# man openssl rsa 
[root@CentOS6 ~]# openssl rsa -in /tmp/key -pubout -out /tmp/key_pub #提取公钥输出至文件; 
writing RSA key 
[root@CentOS6 ~]# cat /tmp/key_pub 
-----BEGIN PUBLIC KEY----- 
MCAwDQYJKoZIhvcNAQEBBQADDwAwDAIFALIi200CAwEAAQ== 
-----END PUBLIC KEY-----

Linux下使用OpenSSL生成证书  http://www.linuxidc.com/Linux/2015-05/117034.htm

通过OpenSSL提供FTP+SSL/TLS认证功能,并实现安全数据传输 http://www.linuxidc.com/Linux/2013-05/84986.htm

利用OpenSSL签署多域名证书 http://www.linuxidc.com/Linux/2014-10/108222.htm

OpenSSL 的详细介绍请点这里
OpenSSL 的下载地址请点这里

本文永久更新链接地址http://www.linuxidc.com/Linux/2015-05/117253.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值