安全与加密-使用gpg实现加密与解密

对称加密算法

加密和解密使用同一个密钥

常见的算法:

DES,3DES,AES,Blowfish,Twofish,IDEA,RC6,CAST5

? 特性:

1、加密、解密使用同一个密钥,效率高

2、将原始数据分割成固定大小的块,逐个进行加密

? 缺陷:

1、密钥过多

2、密钥分发

3、数据来源无法确认

非对称加密算法

公钥加密:密钥是成对出现

? 公钥:公开给所有人;public key

? 私钥:自己留存,必须保证其私密性;secret key

? 特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然

功能:

? 数字签名:主要在于让接收方确认发送方身份

? 对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方

? 数据加密:适合加密较小数据

? 缺点:密钥长,加密解密效率低下

常见的算法:

RSA(加密,数字签名),

DSA(数字签名),

ELGamal

来查看本机系统中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: [email protected] 邮件地址

Comment:  备注

You selected this USER-ID:

"gpg-key-a <[email protected]>"

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 <[email protected]>

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 <[email protected]>

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

加密文件

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

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

#gpg -d gpg.conf.gpg

成功

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

原文地址:http://blog.51cto.com/191226139/2060667

时间: 2024-11-04 08:18:28

安全与加密-使用gpg实现加密与解密的相关文章

安全与加密之gpg,ssh服务

安全与加密 本章目录 gpg的使用 ssh服务 dropbear aide 1. gpg的使用 GPG是加密和数字签名的免费工具,大多用于加密信息的传递.除了仅用密码加密外,GPG最大的不同是提供了"公钥/私钥"对.利用你的"公钥"别人加密信息不再需要告诉你密码,随时随地都能发送加密信息.而这种加密是单向的,只有你的"私钥"能解开加密.数字签名又是另一大使用方向.通过签名认证,别人能确保发布的消息来自你,而且没有经过修改. 使用gpg实现对称加密

《gpg文件加密的使用》RHEL6

甲端: 首先是要生成一对密钥: 提示是否要生成2048个字节的密钥对:   下面都是生成密钥对时的步骤: 按"o"键开始生成密钥对: 提示要我给密钥对加个密码: 输入2次 之后密钥对的字符需要我按键盘或移动鼠标来截取: 完成后我们来查看下密钥对: 密钥对的配置文件和信息或放在: 生成后我们需要把密钥的公钥导出:生成后目录下会多一个pub.key的文件: 我们将这个公钥发送给远程主机: 乙端: 乙端会收到公钥: 客户端将公钥导入本地: 导入失败的话:可能是时间未同步: 查看是否成功导入:

GPG非对称加密

我们需要两个账户进行操作,user1.use2:#这个实验需要我们在图形机上去做: 1.创建加密文件 [[email protected] ~]$ echo hello user2 > a.txt [[email protected] ~]$ ls a.txt 公共 模板 视频 图片 文档 下载 音乐 桌面 2.我们要去user2中生成密钥对 [user[email protected] ~]$ gpg --gen-key gpg (GnuPG) 2.0.22; Copyright (C) 20

加密,gpg加密,ssh三种转发,openssl,pam 题目

加密,gpg加密,ssh三种转发,openssl,pam 一.仅开放本机两个IP地址中的一个地址172.16.0.X上绑定的sshd和vsftpd服务给172.16.0.0/16网络中除了 172.16.0.0/24网络中的主机之外的所有主机,但允许172.16.0.200访问,每次的用户访问都要记录于日志文件 中,注:其中X为学号 /etc/hosts.allow: sshd,vsftpd: 172.16.0.0/16 EXCEPT 172.16.0.0/24 EXCEPT 172.16.0.

【WP开发】加密篇:双向加密

说起双向加密,如果以前在.NET开发中弄过加/解密的朋友都不会陌生,常用的算法有DES.AES等.在RT应用程序中,也提供了加密相关的API,算法自然是一样的,只是API的封装方式不同罢了,因为RT不完全是托管代码,而又类似于COM的形式公开,这对于低端设备来说,性能可以提升,当然了,对于高端设备来说无所谓. 在WP的RT应用中,涉及到加/解密的API都在以下几个命名空间里,大家要用的就在里面找,也不是所有类都会用得上,加密一般就用两大类:需要恢复内容时选用双向加密,如DES.AES等算法:如果

登陆验证前对用户名和密码加密之后传输数据---base64加密

以下这种方法是加密传输的简单实现 1,base64.js /** * * Base64 encode / decode * * */ function Base64() { // private property _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; // public method for encoding this.encode = function (input

AES加密解密&amp;amp;&amp;amp;SHA1、SHA加密&amp;amp;&amp;amp;MD5加密

AES加密解密 SHA1.SHA加密 MD5加密 二话不说立即附上代码: package com.luo.util; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.

md5增加指定的加密规则,进行加密

import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import org.springframework.util.StringUtils; public class MD5 { private static final String ALGORITHM = "MD5"; public

iOS HmacSHA1加密 和 MD5 Base64加密 --iOS开发系列---项目中成长的知识五

项目中开发中需要对一些数据进行加密后和服务器验证是否是我们客户端发出的请求! 方案是服务器定的,使用HmacSHA1加密和MD5 Base64加密 加密过程比较复杂 1.获取格林威治时间 2.用base64编码对请求数据内容进行MD5值计算 3.设置请求格式 4.设置鉴权信息,需要对上面的3个内容以及请求的链接 进行HMacSHA1再次进行加密 加密过后把上面4步获得的值加入到http的请求头中,一并发送给服务器,服务器经过验证后,才返回给我们我们想要的信息 下面贴代码说明我们使用的两个加密 首