加密可以分为对称加密和非对称加密。两者的主要区别就是是否使用同一个秘钥,对称加密需要用同一个秘钥。非对称加密不需要用同一个秘钥,而是需要两个秘钥:公开密钥(publickey)和私有密钥(privatekey),并且加密密钥和解密密钥是成对出现的。

对称加密算法

对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。

不足之处是,交易双方都使用同样钥匙,安全性得不到保证。

常见的对称加密有DES,3DES,AES,Blowfish,Twofish,IDEA,RC6,CAST5 等。

非对称加密算法

密钥是成对出现。使用一对“私钥-公钥”,用私钥加密的内容只有对应公钥才能解开

常见的非对称加密有 RSA、ESA、ECC 等。

 公钥:公开给所有人。不能通过公钥反推出私钥;public key

 私钥:自己留存,不公开。有且只有一个对应的私钥;secret key

 特点:通过私钥加密的密文只能通过公钥能解密,通过公钥加密的密文也只能通过私钥能解密。

但由于算法强度比对称加密复杂,加解密的速度比对称加解密的速度要慢。

来查看本机系统中ssh中的密钥都长啥样呢。pub结尾的就是公钥,key结尾的就是私钥

#ls /etc/ssh/

ssh_host_dsa_key.pub  ssh_host_key.pub  ssh_host_rsa_key.pub

ssh_config  ssh_host_dsa_key  ssh_host_key          ssh_host_rsa_key

查看系统中密码加密算法

#authconfig --test|grep password

shadow passwords are enabled

password hashing algorithm is sha512

常见加密算法工具

md5: 128bits、 sha1: 160bits、 sha224

sha256、 sha384、 sha512

 常用工具

md5sum

sha1sum

sha512sum

openssl

gpg

• rpm -V

需要先导入光盘中的GPG-KEY:

#rpm --import /dvd/RPM-GPG-KEY-CentOS-6

或安装好的系统的

#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#rpm -K /dvd/Packages/kernel-2.6.32-696.el6.x86_64.rpm

/dvd/Packages/kernel-2.6.32-696.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

可以利用加密算法对文件进行计算以便发现是否被篡改

md5sum --check 保存的计算结果文件

#sha512sum --check file.sum

b: FAILED

sha512sum: WARNING: 1 of 1 computed checksum did NOT match

使用gpg实现对称加密与解密

 对称加密file文件

#gpg -c sshd_config

输入2次密码之后,会生成一个sshd_config.gpg

#file sshd_config.gpg

sshd_config.gpg: data

解密此加密过的file,输入正确的密码即可

-o 是指定输出位置,必须放在前面。

#gpg -o /tmp/sshd -d sshd_config.gpg

使用gpg工具实现非对称公钥加密与解密

#gpg --gen-key

gpg (GnuPG) 2.0.14; Copyright (C) 2009 Free Software Foundation, Inc.

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want: 选择加密方式

(1) RSA and RSA (default)

(2) DSA and Elgamal

(3) DSA (sign only)

(4) RSA (sign only)

Your selection? 1

RSA keys may be between 1024 and 4096 bits long.选择加密长度

What keysize do you want? (2048) 默认回车

Requested keysize is 2048 bits

Please specify how long the key should be valid.选择密钥有效期

0 = key does not expire

<n>  = key expires in n days

<n>w = key expires in n weeks

<n>m = key expires in n months

<n>y = key expires in n years

Key is valid for? (0) 1y

Key expires at Sun 13 Jan 2019 08:02:46 PM CST

Is this correct? (y/N) y 是否确认以上信息

GnuPG needs to construct a user ID to identify your key.

Real name: gpg 保存一个名字

Name must be at least 5 characters long 至少需要5个字符

Real name: gpg-key-a

Email address: aa@aa.com 邮件地址

Comment:  备注

You selected this USER-ID:

"gpg-key-a <aa@aa.com>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O 保存是O

再接输入2次密码

然后,加密过程就根据加密长度,会让你随机输入字符,总这就是你不断的敲东西啦。可以开多个终端窗口,批量发送信息。挺有意思的。

这个操作在图形界面下只需要动动鼠标就好了

生成了一对密钥。

#ls ~/.gnupg/

gpg.conf  private-keys-v1.d  pubring.gpg  pubring.gpg~  random_seed  secring.gpg  trustdb.gpg

pubring.gpg 公钥

secring.gpg 私钥

#gpg -k

/root/.gnupg/pubring.gpg

------------------------

pub   2048R/4CBA6F6A 2018-01-13 [expires: 2019-01-13]

uid                  gpg-key-a <aa@aa.com>

sub   2048R/215FAF14 2018-01-13 [expires: 2019-01-13]

导出公钥

#gpg -a --export -o gpg-a-pubkey

在另外一个系统导入公钥

#gpg --import gpg-a-pubkey

#gpg -k   能看到导入的公钥

/root/.gnupg/pubring.gpg

------------------------

pub   2048R/4CBA6F6A 2018-01-13 [expires: 2019-01-13]

uid                  gpg-key-a <aa@aa.com>

sub   2048R/215FAF14 2018-01-13 [expires: 2019-01-13]

加密文件

#gpg -e -r gpg-key-a gpg.conf     -r 是指定加密的公钥名

回到导出公钥的主机,执行解密

#gpg -d gpg.conf.gpg

成功

OpenSSL

开源项目

三个组件:

openssl: 多用途的命令行工具,包openssl

libcrypto: 加密算法库,包openssl-libs

libssl:加密模块应用库,实现了ssl及tls,包nss,openssl命令:

两种运行模式:交互模式和批处理模式

直接使用openssl回车进入交互模式,输入?列出命令菜单。

命令分为:

标准命令Standard commands

消息摘要命令Message Digest commands

加密命令Cipher commands

openssl命令

帮助:man enc ,man dgst

对称加密

语法:

openssl enc

常用选项有:

-in filename: 指定要加密的文件存放路径

-out filename: 指定加密后的文件存放路径

-salt: 自动插入一个随机数作为文件内容加密,默认选项

-e: 可以指明一种加密算法,若不指的话将使用默认加密算法。支持的算法在man中

-d: 解密,解密时也可以指定算法,若不指定则使用默认算法,但一定要与加密时的 算法一致

-a/-base64: 使用-base64位编码格式

示例

#openssl enc -e -des3 -a -in issue -out issue.des3

enter des-ede3-cbc encryption password:

Verifying - enter des-ede3-cbc encryption password:

#ll

-rw-r--r-- 1 root root 33 Jan 14 16:11 issue

-rw-r--r-- 1 root root 78 Jan 14 16:25 issue.des3

#cat issue.des3

U2FsdGVkX1+eOWAl9ZWtfyLzZY/4+256W1QduATECmFFuhYhc9pX2HZAe9AQ9l/o

K3aVnlttg4s=

解密

#openssl enc -d -des3 -a -in issue.des3 -out issue2

单向加密:

openssl dgst

常用选项有:

-out filename: 将加密的内容保存到指定文件中

示例

#openssl dgst issue   默认是MD5

MD5(issue)= 1ad7bcb8447ccaaeb490feea29c6f6df

#openssl dgst -sha512 issue

生成用户密码:

openssl passwd

帮助:man sslpasswd

常用选项

-salt string:加入随机数,最多8位随机数

-in file:对输入的文件内容进行加密

-stdion:对标准输入的内容进行加密

openssl passwd -1 -salt SALT(最多8位)

openssl passwd -1 –salt centos

生成随机数:

openssl rand

帮助:man sslrand

openssl rand -base64 NUM

NUM: 表示字节数

生成密钥对:

openssl genrsa

帮助:man genrsa

openssl rand -base64 NUM

NUM: 表示字节数

#openssl genrsa -out issue.key -des3 2048

#(umask 066;openssl genrsa -out issue.key -des3 2048)  使用这绿色的参数是非对称加密

生成后必须放到一个安全的地方,并且修改权限不让其他人查看

使用非对称加密后的key会有这些字样:Proc-Type: 4,ENCRYPTED

将加密key解密

#openssl rsa -in issue.key -out issue.key2

从私钥中提取出公钥

常用选项:

-in filename:指明私钥文件

-out filename:指明将提取出的公钥保存至指定文件中

-pubout:根据私钥提取出公钥

#openssl rsa -in issue.key -pubout -out issue.key.pub

cat issue.key.pub

-----BEGIN PUBLIC KEY-----

总结,用你的公钥来加密文件,只有你的私钥才能解密。安全性提高。

转载于:https://blog.51cto.com/191226139/2060667

安全与加密-使用gpg和openssl实现加密与解密相关推荐

  1. 22.加密与安全相关,证书申请CA(gpg,openssl)

    安全机制 信息安全防护的目标 保密性 Confidentiality 完整性 Integrity 可用性 Usability 可控制性 Controlability 不可否认性 Non-repudia ...

  2. linux 加密文件,如何运用OpenSSL 对文件进行加密和解密

    导读 我们在平时的 Linux 运维管理的时候,经常会进行各种数据备份任务.将数据导出然后打包.通常在安全性要求比较高的环境下,我们可以借助 OpenSSL 工具对打包后的数据进行加密,这样能进一步的 ...

  3. linux openssl 反弹加密 shell

    前言 在进行红队渗透测试的后渗透阶段为了进一步横行渗透往往需要反弹 shell,这里列出了使用各种语言进行反弹 shell 的方法,我发现这种反弹 shell 方式都有一个缺点,那就是所有的流量都是明 ...

  4. 使用 openssl反弹加密 shell

    目录 前言 OpenSSL 简介 使用 OpenSSL 生成证书自签名证书 使用 OpenSSL 反弹加密 shell Linux Windows 使用 OpenSSL 搭建简易 HTTPS Serv ...

  5. openssl 测试加密卡_OpenSSL自带的aes_128_ecb加密函数——密文长度测试

    OpenSSL自带的aes_128_ecb加密函数--密文长度测试 发表于2017年11月29日 阅读人数(3608) 近来要用到对称加密,就是使用了openssl的库给文件加密,选择的128位的分块 ...

  6. openssl 加密解密 指令_Shell openssl命令加密解密字符串

    Linux下的 openssl 命令解密 我们以在线加密网站为例 http://tool.chacuo.net/cryptdes 我们选择des cbc模式,密钥为abcdefgh, 偏移量为1234 ...

  7. linux 中将文件设置密码,linux – 如何使用公钥在openssl中加密大文件

    如何使用公钥加密大文件,以便没有人除了拥有私钥的人能够解密? 我可以使RSA公钥和私钥,但当涉及到使用此命令加密大文件: openssl rsautl -encrypt -pubin -inkey p ...

  8. 关于PHP的OpenSSL的加密问题

    最近公司项目中有需要用到OpenSSL的加密和java端进行接口验证,再测试环境升级到PHP7的时候加密会出现错误,后来多方面检查终于找到原因所在: PHP7环境下把openssl_get_priva ...

  9. openssl,加密,解密,https

    openssl 什么是openssl: OpenSSL是套开放源代码的SSL套件,其函式库是以C语言所写成, 实作了基本的传输层资料加密功能. 此软件是以Eric Young以及Tim Hudson两 ...

最新文章

  1. [转]老板给你的一封信:我为什么不给你涨工资
  2. CCS代码编辑的几个常用设置
  3. java sortedset_Java类集-SortedSet接口 | 学步园
  4. 2.关于QT中数据库操作,简单数据库连接操作,数据库的增删改查,QSqlTableModel和QTableView,事务操作,关于QItemDelegate 代理
  5. PHP文件加到WordPress页面,WordPress-所有页面链接到index.php文件
  6. vscode 显示分支_Git以及vscode里的使用
  7. 图解TCPIP-DHCP
  8. 暑假周进度总结报告1
  9. python写出函数调用关系_函数递归调用: 调用者 与 被调用者之间的四种数据传递关系...
  10. EXCEL 利用替换、分列、填充功能综合整理财务数据
  11. stm8s电机库vtimer_SetTimer()函数的使用
  12. python高维数据_高维数据怎样可视化?
  13. GDB调试 ORBSLAM3
  14. oracle导出excel数据变成科学计数法
  15. 20130408-[转]贴片钽电容的封装、尺寸和标识
  16. Discuz模板制作教程
  17. python实现动态地图_使用Python、Geopandas和Matplotlib制作gif动态地图
  18. 典型分布式计算技术的分析和比较
  19. unraid虚拟linux系统,UNRAID教程:3分钟用unraid自带的虚拟机安装黑群晖NAS DSM系统很强大!...
  20. html/css笔记 文本添加下划线方法

热门文章

  1. 华硕k555l拆光驱_2L大小的迷你电脑用起来有什么区别?华硕VC66
  2. merge into用法mysql_SQL中merge into用法
  3. python构造方法与java区别_一张图秒懂Java和Python的区别,你知道吗?
  4. 病毒入侵计算机的危害,那些年电脑中过的病毒,中病毒的危害又有哪些
  5. linux环境变量堆栈,情景linux--如何摆脱深路径的频繁切换烦恼?
  6. java中字符串分割器_java简易文本分割器实现代码
  7. java中数据池有哪些_什么是数据库的 “缓存池” ?(万字干货)
  8. 微信小程序开发登录界面mysql_微信小程序 欢迎界面开发的实例详解
  9. 函数声明(函数原型)的一些关键技巧
  10. 访问centos端口