信息加密和解密_信息的解密-程序员宅基地

信息传递的风险

信息传递无时无刻不在发生,包括我们的信件往来,浏览网页,社交软件等等。然而在传递的过程中,会面临各种各样的潜在的风险,比如通过开发人员,出差人员,离职人员,还有我们的合作伙伴,或者商业间谍,电脑黑客,流程失控等等

加/解密

因为信息传递风的风险,所以我们发送方必须对信息进行加密,也就是把明文变成密文,另一方也就是接收方需要再对信息进行解密,也就是把密文在转换成明文。

常用的加密方式和目的:

保证数据的机密性采用

对称加密:加/解密用同一个密钥       

加密算法有 DES(Data Encryption Standard)

                      AES(Advanced Encryption Standard)

非对称加密:加/解密用不同的密钥(公钥/私钥)

算法有  RSA(Rivest Shamirh  Adleman)

              DSA(Digital  Signature Algorithm)

保护信息的完整性用

信息摘要:基于输入的信息生成长度较短,位数固定的散列值

Hash散列技术  根据输入的文本(长度不限) 生成固定的128位的摘要文本

MD5  Message  Digest Algorithm 5

SHA Secure Hash Algorithm

GnuPG,GNU Privacy Guard

官网:http://www.gnupg.org/

最流行的数据加密,数字签名工具软件

[root@mserver ~]# gpg --version
...
Home: ~/.gnupg
支持的算法:
公钥:RSA, ?, ?, ELG, DSA
对称加密:IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256,
     TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256
散列:MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
压缩:不压缩, ZIP, ZLIB, BZIP2

 GnuPG 对称加密 

--symmetric 或 -c     解密  --decrypt 或 -d


[root@server51 ~]# useradd usera
[root@server51 ~]# useradd userb
[root@server51 ~]# echo 123456 | passwd --stdin usera 
[root@server51 ~]# echo 123456 | passwd --stdin userb
[root@server51 ~]# ssh -X usera@localhost 
[usera@server51 ~]$ echo "dui chen jia mi "  >  a.txt
[usera@server51 ~]$ cat a.txt 
dui chen jia mi 
[usera@server51 ~]$ gpg -c a.txt 
        ┌─────────────────────────────────────────────────────┐
        │ 请输入密码                                          │
        │                                                     │
        │                                                     │
        │ Passphrase_1234567890________//输入加密密码__ _______ │
        │                                                     │
        │	<OK>                             <Cancel>     │
        └─────────────────────────────────────────────────────┘

gpg: 已创建目录‘/home/usera/.gnupg’
gpg: 新的配置文件‘/home/usera/.gnupg/gpg.conf’已建立
gpg: 警告:在‘/home/usera/.gnupg/gpg.conf’里的选项于此次运行期间未被使用
gpg: 钥匙环‘/home/usera/.gnupg/pubring.gpg’已建立
[usera@server51 ~]$ cp a.txt.gpg  /tmp/
[userb@server51 ~]$ cat /tmp/a.txt.gpg 
�˕x�7���,��}�����.h�@�WH<]
[userb@server51 ~]$ gpg -d /tmp/a.txt.gpg 
gpg: 已创建目录‘/home/userb/.gnupg’
gpg: 新的配置文件‘/home/userb/.gnupg/gpg.conf’已建立
gpg: 警告:在‘/home/userb/.gnupg/gpg.conf’里的选项于此次运行期间未被使用
gpg: 钥匙环‘/home/userb/.gnupg/secring.gpg’已建立
会出现对话框提示密码
gpg: CAST5 加密过的数据
gpg: 以 1 个密码加密
dui chen jia mi                             //已解密
gpg: 警告:报文未受到完整的保护

GnuPG 非对称/解密

接收方:创建密钥对  gpg  --gen-key     导出公钥:gpg --export、--armor 或 -a

发送方 :导入公钥  gpg --import

加密:gpg  --encrypt 或 -e        --recipient 或 -r      指定目标用户(创建的真实姓名)   文件

解密:gpg --decrypt 或 -d   需要输入私钥密码

[userb@server51 ~]$ gpg --gen-key
gpg: 已创建目录‘/home/userb/.gnupg’
gpg: 新的配置文件‘/home/userb/.gnupg/gpg.conf’已建立
gpg: 警告:在‘/home/userb/.gnupg/gpg.conf’里的选项于此次运行期间未被使用
gpg: 钥匙环‘/home/userb/.gnupg/secring.gpg’已建立
gpg: 钥匙环‘/home/userb/.gnupg/pubring.gpg’已建立
请选择您要使用的密钥种类:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (仅用于签名)
   (4) RSA (仅用于签名)
您的选择?                                //默认即可,直接回车
RSA 密钥长度应在 1024 位与 4096 位之间。    //可自己定义,需要记住
您想要用多大的密钥尺寸?(2048)
您所要求的密钥尺寸是 2048 位
请设定这把密钥的有效期限。
         0 = 密钥永不过期
      <n>  = 密钥在 n 天后过期
      <n>w = 密钥在 n 周后过期
      <n>m = 密钥在 n 月后过期
      <n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) 
密钥永远不会过期
以上正确吗?(y/n) y                        //输入y确定

真实姓名:123456
姓名不可以用数字开头
真实姓名:guo
姓名至少要有五个字符长
真实姓名:guo123
电子邮件地址:123456
电子邮件地址无效
电子邮件地址:[email protected]
注释:123
您选定了这个用户标识:
    “guo123 (123) <[email protected]>”

更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?O
您需要一个密码来保护您的私钥。

会弹出对话框,提示输入密码(这里为123456790)
...
公钥和私钥已经生成并经签名。
...

[userb@server51 ~]$ gpg --export  -a > /tmp/userb.pub    //导出公钥到文件中
[usera@server51 ~]$ gpg --import  /tmp/userb.pub       //usera用户导入公钥
gpg: 已创建目录‘/home/usera/.gnupg’
gpg: 新的配置文件‘/home/usera/.gnupg/gpg.conf’已建立
gpg: 警告:在‘/home/usera/.gnupg/gpg.conf’里的选项于此次运行期间未被使用
gpg: 钥匙环‘/home/usera/.gnupg/secring.gpg’已建立
gpg: 钥匙环‘/home/usera/.gnupg/pubring.gpg’已建立
gpg: /home/usera/.gnupg/trustdb.gpg:建立了信任度数据库
gpg: 密钥 98FA8D5F:公钥“guo123 (123) <[email protected]>”已导入
gpg: 合计被处理的数量:1
gpg:           已导入:1  (RSA: 1)
[usera@server51 ~]$ ls ./.gnupg/
gpg.conf  pubring.gpg  pubring.gpg~  secring.gpg  trustdb.gpg
[usera@server51 ~]$ echo 'fei dui chen jia mi '  >  test.txt
[usera@server51 ~]$ gpg -e -r  guo123 test.txt 
无论如何还是使用这把密钥吗?(y/N)y
[usera@server51 ~]$ cp test.txt.gpg  /tmp/
[userb@server51 ~]$ cat /tmp/test.txt.gpg 
�
  ���޹9A��7�G�]�a�6���L����M���0]�....
[userb@server51 ~]$ gpg -d /tmp/test.txt.gpg  > 2.txt

您需要输入密码,才能解开这个用户的私钥:“guo123 (123) <[email protected]>”
2048 位的 RSA 密钥,钥匙号 B9391241,建立于 2018-12-29 (主钥匙号 98FA8D5F)

gpg: 由 2048 位的 RSA 密钥加密,钥匙号为 B9391241、生成于 2018-12-29
      “guo123 (123) <[email protected]>”                //刚才私钥保护密码
[userb@server51 ~]$ cat 2.txt 
fei dui chen jia mi 

GPG软件签名和验证

软件签名和验证过程

软件官方以私钥对软件包进行数字签名

用户下载软件包和官方公钥

以官方公钥验证软件签名,确保数据来源正确

对软件包建立签名文件  分离式签名  --detach-sign 或 -b

验证签名   --verify

[userb@server51 ~]$ vim qianming.txt
123456
654321
000000
[userb@server51 ~]$ gpg -b qianming.txt 

您需要输入密码,才能解开这个用户的私钥:“guo123 (123) <[email protected]>”
2048 位的 RSA 密钥,钥匙号 98FA8D5F,建立于 2018-12-29

弹出对话框,提示输入密码
[userb@server51 ~]$ ls
2.txt  perl5  qianming.txt  qianming.txt.sig               //.sig生成的签名文件
[userb@server51 ~]$ cp qianming.*  /tmp                    //需要签名文件和源文件同时导出
[usera@server51 ~]$ gpg --verity  /tmp/qianming.txt.sig        //usera持有公钥进行验证
gpg: invalid option "--verity"
[usera@server51 ~]$ gpg --verify  /tmp/qianming.txt.sig 
gpg: 于 2018年12月29日 星期六 17时24分41秒 CST 创建的签名,使用 RSA,钥匙号 98FA8D5F
gpg: 完好的签名,来自于“guo123 (123) <[email protected]>”
gpg: 警告:这把密钥未经受信任的签名认证!
gpg:       没有证据表明这个签名属于它所声称的持有者。
主钥指纹: 8D92 C393 C5B5 55EA EA02  0AE9 6006 BC0F 98FA 8D5F
[root@server51 ~]# vim /tmp/qianming.txt          //以root身份对文件进行改动
123456
654321
000000
aaa
[usera@server51 ~]$ gpg --verify  /tmp/qianming.txt.sig     //usera用户进行验证,签名已经损坏
gpg: 于 2018年12月29日 星期六 17时24分41秒 CST 创建的签名,使用 RSA,钥匙号 98FA8D5F
gpg: 已损坏的签名,来自于“guo123 (123) <[email protected]>”

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43800781/article/details/85339329

智能推荐

while循环&CPU占用率高问题深入分析与解决方案_main函数使用while(1)循环cpu占用99-程序员宅基地

文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。​​​​​​while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99

【无标题】jetbrains idea shift f6不生效_idea shift +f6快捷键不生效-程序员宅基地

文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效

node.js学习笔记之Node中的核心模块_node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是-程序员宅基地

文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是

数学建模【SPSS 下载-安装、方差分析与回归分析的SPSS实现(软件概述、方差分析、回归分析)】_化工数学模型数据回归软件-程序员宅基地

文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件

利用hutool实现邮件发送功能_hutool发送邮件-程序员宅基地

文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件

docker安装elasticsearch,elasticsearch-head,kibana,ik分词器_docker安装kibana连接elasticsearch并且elasticsearch有密码-程序员宅基地

文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码

随便推点

Python 攻克移动开发失败!_beeware-程序员宅基地

文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware

Swift4.0_Timer 的基本使用_swift timer 暂停-程序员宅基地

文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停

元素三大等待-程序员宅基地

文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待

Java软件工程师职位分析_java岗位分析-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析

Java:Unreachable code的解决方法_java unreachable code-程序员宅基地

文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code

标签data-*自定义属性值和根据data属性值查找对应标签_如何根据data-*属性获取对应的标签对象-程序员宅基地

文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象

推荐文章

热门文章

相关标签