对称加密算法
 对称加密:加密和解密使用同一个密钥DES:(Data Encryption Standard),des,56bits
3DES:
AES:Advanced (128, 192, 256bits) Blowfish,Twofish IDEA,RC6,CAST5
(目前主流的对称加密) 特性:
1、加密、解密使用同一个密钥,效率高
2、将原始数据分割成固定大小的块,逐个进行加密
 缺陷:
1、密钥过多
2、密钥分发
3、数据来源无法确认

非对称加密算法
 公钥加密:密钥是成对出现
 公钥:公开给所有人;public key
 私钥:自己留存,必须保证其私密性;secret key
 特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然
 功能:
 数字签名:主要在于让接收方确认发送方身份
 对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方
 数据加密:适合加密较小数据
 缺点:密钥长,加密解密效率低下
 算法:
RSA(加密,数字签名) DSA(数字签名) ELGamal
非对称加密:基于一对公钥/密钥对,用密钥对中的一个加密,另一个解密来实现加密:
接收者:生成公钥/密钥对:P和S 公开公钥P,保密密钥S
发送者:使用接收者的公钥来加密消息M 将P(M)发送给接收者
接收者:使用密钥S来解密:M=S(P(M))

非对称加密:实现数字签名:
发送者:生成公钥/密钥对:P和S 公开公钥P,保密密钥S 使用密钥S来加密消息M 发送给接收者S(M)
接收者:使用发送者的公钥来解密M=P(S(M)),结合签名和加密,分离签名。

实际生产环境中,因为非对称加密需要的时间过长,我们使用组合方式来加密解密数据:
1 使用对称秘钥(key)来加密数据(date),即key(date)
2 但是这样做,要保证对方能接收到这个秘钥才可以,所以我们再用对方的公钥(pb)来加密这个秘钥,附加在这个数据后面,即key(date)+pb(key)
3 接下来为了确定数据传送人,我们在数据后面,补上一个发送者用私钥做的签名,即sa(date)
4 整个发送包从单一的date,变为了key(date+sa(date))+pb(key)

那么解密过程为,接收端使用自己的私钥来解开pb+(key)拿到对称秘钥key,再使用对称秘钥key来解开发送端的加密数据:key(date)
然后用发送端的公钥解开sa(date),将两份date互相对比,若无差异,就可以认为数据是由发送端发送过来的。

缺点:需要传送2份数据,比较费事。
单向散列(哈希算法)
 将任意数据缩小成固定大小的“指纹”(一大堆随机字符),其特征为:
1 任意长度输入,固定长度输出
2 若修改数据,指纹也会改变(哪怕是一丁点的改变,也会导致生成的指纹差生巨大的差异。)
3 无法从指纹中重新生成数据(“单向”),即不能从随机生成的字符,来逆向还原加密文件的内容。
功能:数据完整性
 常见算式
md5: 128bits、sha1: 160bits、sha224、sha256、sha384、sha512

md5生成的是128位二进制的哈希运算。它对一个数据做哈希运算,得出的哈希数据叫做摘要,只要数据一样,那么哈希数据也绝对一样。

通常用这个方式,来确认发送者的身份。举例:我们从一个centos系统网站上下载一个centos系统,从互联网给出的哈希数据与,我们下载后用哈希计算后的数据做对比,如果一样,则系统并没有发生变化。

常用工具
md5sum | sha1sum [ --check ] file
openssl、gpg
rpm -V+指定程序   

有了哈希运算,非对称的数字签名也大为改善:公式
key(date+sa(date))+pb(key)可以变为
key(date+sa(haxi(date)))+pb(key)了。
那么解密过程为,接收端使用自己的私钥来解开pb+(key)拿到对称秘钥key,再使用对称秘钥key来解开发送端的加密数据:key(date)
然后用发送端的公钥解开,私钥加密的哈希数据sa(haxi(date)),使用哈希来计算加密的数据key(date),将生成的哈希数据与解密得到的哈希数据haxi(date)做对比,若无差异,就可以认为数据是由发送端发送过来的。
由校对2分数据改为了校对2个哈希值,在安全性能不变的情况下,效率大幅提升。

密钥交换:IKE( Internet Key Exchange )
第一种:公钥加密(上边例子已讲)

第二种:DH (Deffie-Hellman):生成会话密钥.DH举例:

1 A: g,p 协商生成公开的整数g, 大素数p(只能被自己或1整除的数,叫做质数,质数也就是素数,比如1,3,7,13,17等等。)
假设生成的整数g为5,大素数p为23.

2 B: g,p同样生成整数g和大素数p
因为是协商,故A和B的值都一样,即g为5,大素数p为23.

3 A:生成隐私数据:a (a<p ),计算得出g^a%p,发送给B
隐私数据a的值是小于p的,并且进行计算,用g的a次平方,去取余p,设a的值为4,则计算结果为: 5^4%23,得出结果为:4,将这个数字发给B

4 B:生成隐私数据:b,计算得出g^b%p,发送给A
隐私数据b的值是小于p的,并且进行计算,用g的a次平方,去取余p,设b的值为3,则计算结果为: 5^3%23,得出结果为:10, 将这个数字发给A

5 A:计算得出 [(g^b%p)^a] %p = g^ab%p,生成为密钥
[(5^3%23)^4]%23=10^4%23=18,5^12%23=18 将18作为对称秘钥

6 B:计算得出 [(g^a%p)^b] %p = g^ab%p,生成为密钥
[(5^4%23)^3]%23=4^3%23=18,5^12%23=18 将18作为对称秘钥
18就作为A和B双方的对称秘钥来使用.
由惠特菲尔德•迪菲(Bailey Whitfield Diffie)和马丁•赫尔曼(Martin Edward Hellman)在1976年发表,参考:https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange

应用程序:RPM
 文件完整性的两种实施方式
 第一种:被安装的文件,分为
MD5单向散列
哈希运算还可以将一些重要文件,事先计算出来哈希值。保存在一个文件内,然后用命令来检查文件内的哈希值是否一样,通过这个办法来确定重要文件是否被改变。示例:

以及rpm --verify package_name(or -V)
rpm包会在安装程序时,将生成的数据库文件的初始状态做哈希运算保存起来,使用-V就是检查指定程序是否被更改。被更改会提示,如下图:

 第二种:发行的软件包文件
GPG公钥签名
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*--导入公钥
rpm --checksig pakage_file_name (or -K)—检查文件的哈希值

转载于:https://blog.51cto.com/13477118/2139352

马哥学习----李洋个人笔记----安全和加密相关推荐

  1. 马哥学习李洋个人笔记之-----正则表达式

    正则表达式 什么是正则表达式? 正则表达式就是为了处理大量的文本|字符串而定义的一套规则和方法,通过定义的这些特殊符号 的辅助,就可以快速过滤,替换或输出需要的字符串.Linux正则表达式一般以行为单 ...

  2. 马哥学习----李洋个人笔记--启动故障排除

    故障1 删除/boot之后的恢复步骤: 1 重启电源,迅速按esc进去选择启动模式,然后选cd-rom这项(从光驱启动) 2 重启后进入救援模式(选择rescue),选择语言和键盘布局后,一路回车到下 ...

  3. 马哥学习----李洋个人笔记----mysql(上)

    mysql数据库 章节内容  关系型数据库基础  安装mysql yum包安装,源码包编译安装,二进制安装.  管理数据库和表  用户和权限管理  函数和存储过程  mysql架构  存 ...

  4. 马哥学习周总结第一周→linux简介、’文件系统及基础命令------李洋个人笔记。...

    linux计算机的设备有两种 1 字符设备(顺序数据) 键盘,显示器 共同点是数据交换时是一个一个字符来进行的. 2 块设备(随机数据) 硬盘 交换数据按包为单位进行. Linux的文件:在存储空间存 ...

  5. 马哥学习笔记——shell变量类型

    shell变量基础 shell 变量是一种很"弱"的变量,默认情况下,一个变量保存一个串,shell不关心这个串是什么含义.所以若要进行数学运算,必须使用一些命令例如let. de ...

  6. 马哥学习笔记二十七——IO复用

    I/O动作模式 阻塞 非阻塞 I/O复用 信号驱动 异步 转载于:https://www.cnblogs.com/wangyongbin/p/3817353.html

  7. 马哥 mysql_马哥学习笔记五——MYSQL初步

    1.mysql -u USERNAME -p -h MYSQL_SERVER linux:socket windows:memory 2.交互式模式中的命令类别 客户端命令 服务器端命令 必须使用语句 ...

  8. 马哥mysql,马哥学习笔记五MYSQL初步

    1.mysql -u USERNAME -p -h MYSQL_SERVER linux:socket windows:memory 2.交互式模式中的命令类别 客户端命令 服务器端命令 必须使用语句 ...

  9. 马哥 mysql_马哥学习笔记十八——MySQL进阶之日志管理

    错误日志:log_error,log_warnings 服务器启动和关闭过程中的信息 服务器运行过程中的错误信息 事件调度运行一个事件时产生的信息 在从服务器上启动从服务器进程时产生的信息 一般查询日 ...

  10. 马哥 mysql_马哥学习笔记十五——MySQL进阶之SQL语句

    数据库: create database|schema [if not exists] db_name [character set =] [collate =]; alter database dr ...

最新文章

  1. log4j的日志级别(ssm中log4j的配置)
  2. 因子和(类素数筛选法)
  3. 最新版python学习_最全Python学习路线图【2020最新版】
  4. mysql 前n个最大值_MySQL varchar计算:求列的数目和计算N的最大值
  5. 【报告分享】新零售专题报告:从直播电商的春秋战国,看mcn的进阶之道.pdf
  6. 系统学习 TypeScript(四)——变量声明的初步学习
  7. insert转update工具_mysql binlog 分析工具
  8. 比较两个数的大小的代码比较:(C语言)
  9. 租房软件隐私保护如同虚设
  10. 汉仪旗黑vivo版,汉仪旗黑字体全集全新旗黑系列71款
  11. matlab中ones函数的使用方法详细介绍(附matlab代码)
  12. word怎么设置分栏 word设置分栏的方法
  13. Rate 函数在PromQL 查询中的使用
  14. iMindMap12免费下载安装激活教程及如何免费用思维导图学习
  15. PostgreSQL-Docker创建PostgreSQL数据库并导入矢量数据
  16. 和USB网络线有关的资料和我遇到的一些问题及解决
  17. 多线程(一)——委托与多线程
  18. tf.nn.moments( )函数的使用
  19. 作为外包,你冤枉了吗?| 程序员有话说
  20. commvault备份mysql数据库_Commvault数据备份恢复平台-功能测试报告.pdf

热门文章

  1. Atitit 事务的一些概念 目录 1. 事务的另一个特性:数据隔离级别 1 2. Spring五个事务隔离级别和七个事务传播行为 1 3. 在TransactionDefinition接口中定义了
  2. 恒生电子:O45好在哪儿(深度)| 国君计算机李沐华
  3. 彼得.泰尔:认知未来是投资人的谋生之道
  4. Julia :元编程、宏
  5. 精译丨贝莱德掌舵人拉里 · 芬克:华尔街是什么
  6. (转)密码学研究与区块链实践应该打破隔空喊话
  7. 从心理学角度看,如何通过故事影响客户的决策?
  8. 【滤波器】基于matlab GUI分数延迟滤波器设计【含Matlab源码 1347期】
  9. 【图像分割】基于matlab超像素图像分割【含Matlab源码 720期】
  10. 【语音编码】基于matlab ADPCM编解码【含Matlab源码 553期】