2021-11-11密码学

2023-10-29

对称密码体系中发送者和接收者使用同一个密钥加密和解密(对称、可逆);非对称密码体系中发送者使用接收者的公钥进行加密,接收者使用自己的私钥进行解密(非对称)。

五种对称加密算法总结:

1、DES

已破解,不再安全,基本没有企业在用了;是对称加密算法的基石,具有学习价值;
密钥长度56(JDK)、56/64(BC)

2、DESede(三重DES)
早于AES出现来替代DES;计算密钥时间太长、加密效率不高,所以也基本上不用;
密钥长度112/168(JDK)、128/192(BC)

3、AES

最常用的对称加密算法,密钥建立时间短、灵敏性好、内存需求低;实际使用中,使用工作模式为CTR(最好用BC去实现),此工作模式需要引入IV参数(16位的字节数组);
密钥长度128/192/256,其中192与256需要配置无政策限制权限文件(JDK6);
填充模式最常用的两种PKCS5Padding和PKCS7Padding,其中后者只有BC独有。

4、IDEA

常用的电子邮件加密算法,工作模式只有ECB;密钥长度128位

5、PBE

综合了消息摘要算法和对称加密算法,最常见的是PBEWithMD5AndDES。工作模式只有CBC(已丧失安全性,不推荐使用),所以PBE目前也不推荐使用了

三种非对称加密算法总结:

1.DH

非对称算法的基石,仅能用于密钥分配,不能用于加解密数据,一般加密数据用AES,密钥长度:512~1024中的64的整数倍,双方各有自己的密钥对。

2.RSA

最经典的非对称加密算法,也可认为是使用最多的非对称加密算法,能用于密钥分配,也能用于加解密数据(“私钥加密,公钥解密”和“公钥加密,私钥解密”);密钥长度:512~65536(64的整数倍),可用于数字签名\\只有发送发有一个密钥对,或者更安全的做法是:双方均生成自己的密钥对,但是后边使用密钥对进行加解密时与DH有区别。

*密文=明文^E mod N (因此只需知道E和N 任何人都可以完成加密运算,E和N就是RSA算法的公钥)

*明文=密文^D mod N(D和N充当RSA算法的私钥)

N是公开的,所以用于加密和解密的只有E和D,为了生成密钥对:需要求得N、L(仅在生成密钥对的过程中使用的数)、E、D

1)求N
使用伪随机数生成器生成两个很大的质数p、q,质数:在大于1的自然数中,除了1和它本身不会有其他因数)N=p*q
2)求L
L只出现在生成密钥对的过程中,不会出现于加解密中
L=lcm(p-1,q-1)L是p-1和q-1的最小公倍数
3)求E
1<E<L,gcd(E,L)=1,E与L的最大公约数为1;使用伪随机数生成器生成E的候选数,再判断是否满足最大公约数为1(使用辗转相除法)
4)求D
D是由E得到
1<D<L,E*DmodL=1

3.ELGamal

数字签名DSA的基础,具体实现方式只有BC有,与RSA的实现方式类似,只有“公钥加密,私钥加密”方式(公钥加密实际上安全性不高),密文会成倍扩张,该算法是利用modN下求离散对数的难度。

非对称密码体系

·发送者只需知道加密密钥

·接收者只需知道解密密钥

·解密密钥不可被窃听者获取

·加密密钥被窃听者获取也没问题

公钥密码存在的问题

1.公钥密码虽然解决了密钥配送的问题。但是我们还要判断所得到的公钥是否是正确的合法的,这个问题被称之为公钥认证问题
2.公钥密码处理速度慢,只有对称加密的几百分之一。

RSA的有关求解

基本概念

 一、什么是“素数”?

素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积。

二、什么是“互质数”(或“互素数”)?

公约数只有1的两个数叫做互质数

(1)两个质数一定是互质数。eg:2&7、13&19

(2)一个质数如果不能整除另一个合数,这两个数为互质数。eg:3&10、5&26

(3)1不是质数也不是合数,它和任何一个自然数在一起都是互质数。eg:1和9999

(4)相邻的两个自然数是互质数。eg:15&16

(5)相邻的两个奇数是互质数。eg:49&51

(6)大数是质数的两个数是互质数。eg:97&88

(7)小数是质数,大数不是小数的倍数的两个数是互质数。eg:7&16

(8)两个数都是合数(两数差由较大),小数所有的质因数,都不是大数的约数,这两个数是互质数。eg:357&715、357=3*7*17,而3、7和17都不是715的约数,这两个数为互质数。

三、什么是模指数运算?
   模运算是整数运算,有一个整数m,以n为模做模运算,即m mod n。让m去被n整除,只取所得的余数作为结果,就叫做模运算。例如,10 mod 3=1;26 mod 6=2;28 mod 2 =0等等。
  模指数运算就是先做指数运算,取其结果再做模运算。如(5^3) mod 7 = (125 mod 7) = 6。

四、如何应用RSA算法加解密?

1.随机选择两个不同的素数p,q;

2.将p,q相乘,记作n=pXq;

3.计算n的欧拉函数φ ( n ),欧拉函数证明,当p,q为不相同的素数时,φ ( n ) = ( p − 1 ) ( q − 1 );

4.随机选择一个整数e,满足两个条件:φ ( n )与e互质,且1<e<φ ( n );

5.计算e对于φ ( n )的模反元素d,也就是说找到一个d满足ed=1modφ ( n )。这个式子等价于ed-1=kφ ( n ),实际上就是对于方程ed-kφ ( n )=1求解(d,k)的整数解。这个方程可以用扩展欧几里得算法求解。

6.最终把(e,n)封装成公钥,(d,n)封装成私钥。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2021-11-11密码学 的相关文章

  • 测试用例(边界值法)

    1 什么是边界值法 有效数据和无效数据的分界点 往往作为程序员编写程序的判断点 是程序员容易犯错的地方 也是测试人员重点测试的内容 我们把这些分界点的值找到 并进行测试的方法 称为边界值法 2 边界值法应用的场合 1 有数据输入的地方 一般
  • 【毕业设计】基于M5Stack UnitV2的手写识别计算器的设计与制作

    目录 一 简介 二 设计原理 三 系统设计 四 注意点 五 困难 一 简介 耗时五个月 终于完成了毕业设计和毕业答辩 在这里记录一下学习与实现过程 题目是导师给的 这是主要任务和工作内容 利用M5Stack UnitV2的目标检测功能 用摄
  • Java中final 关键字

    final在Java中并不常用 然而它却为我们提供了诸如在C语言中定义常量的功能 不仅如此 final还可以让你控制你的成员 方法或者是一个类是否可被覆写或继承等功能 这些特点使final在Java中拥有了一个不可或缺的地位 也是学习Jav
  • python下载文件损坏_Python爬虫,图片下载完后是损坏的,怎么解决?

    coding utf 8 import requests from bs4 import BeautifulSoup import os import sys reload sys sys setdefaultencoding utf8 爬
  • Unknown column 'rownum' in 'where clause'解决方案

    Unknown column rownum in where clause 当在嵌套的查询语句里面用到rownum的时候会遇到这个问题 比如 SELECT FROM select t id t name from USER INFO t w

随机推荐

  • 矩阵的等价,相似,合同

    转自http blog csdn net abraham li article details 50058123 矩阵等价 定义 对同型矩阵A B 存在可逆阵P和Q 使得B PAQ 充要条件 A和B的秩相等 两个矩阵对应着两个不同的线性变换
  • [大话设计模式C++版] 第8章 雷锋依然在人间 —— 工厂方法模式

    源码可以在这里找到 大话设计模式C 版 模拟大学生学雷锋 main cpp class LeiFeng public void Sweep cout lt lt 扫地 lt lt endl void Wash cout lt lt 洗衣 l
  • Redis高可用方案--sentinel(哨兵模式)和集群

    redis高可用方案 sentinel 哨兵模式 和集群 一 redis高可用方案 sentinel 哨兵模式 哨兵模式简介 sentinel工作过程 关于sentinel的三个定时任务 sentinel网络 sentinel网络故障修复原
  • 坐得越久 死得越快 还是站着编程吧

    导读 一项对超过 20 万个澳大利亚人的研究结果给这样一个事实又增加了一份活体证明 坐得越久的人死得越快 研究同时还发现 锻炼不能改变这种趋势 尽管它能有效降低这种风险 老话题了 研究显示 久坐对你的健康是真的 真的 真的非常有害 请买一个
  • STM32 最简单的边沿触发脉冲计数程序

    include led h include delay h include key h include sys h include usart h include timer h include lcd h extern u8 sign e
  • 2.JVM自动内存管理

    2 自动内存管理 2 1 概述 Java与C 之间有一堵由内存动态分配和垃圾收集技术所围成的高墙 墙外面的人想进去 墙里面的人却想出来 C 需要对构建的每个对象的生命周期进行管理和维护 Java把对象的生命周期 内存管理 交给了JVM 简化
  • 重磅来袭!怎么用java编写app软件

    前言 本人是底层 211 本科 刚毕业 科研经历 但是有些项 经历 在国内监控行业某头部企业做过一段时间的实习 想着投下字节 可以积累 下 试经验和为金九银十面招做准备 投了简历之后 过了一段时 间 HR 就打电话跟我约时间 说明一下 我投
  • nodejs解决mysql和连接池(pool)自动断开问题

    最近在做一个个人项目 数据库尝试使用了mongodb sqlite和mysql 分享一下关于mysql的连接池用法 项目部署于appfog 项目中我使用连接池链接数据库 本地测试一切正常 上线以后 经过几次请求两个数据接口总是报503 一直
  • 详解Linux手动释放缓存的方法

    详解Linux手动释放缓存的方法 Linux释放内存的命令 sync echo 1 gt proc sys vm drop caches 0 不释放 系统默认值 1 释放页缓存 2 释放dentries和inodes 3 释放所有缓存 释放
  • 《计算机组成原理实验》 单周期CPU

    计算机组成原理实验 单周期CPU 前言 这是中山大学2018年计算机组成原理实验中单周期CPU的实验报告 仿真与写板的内容暂略 所有源代码 包括写板 已经上传至我的github当中 欢迎大家访问 github个人主页 https stara
  • C++学习(四十)fputs

    C语言库函数 把字符串写入到指定的流 stream 中 但不包括空字符 不自动写入字符串结束标记符 0 成功写入一个字符串后 文件的位置指针会自动后移 函数返回值为非负整数 否则返回EOF 符号常量 其值为 1 int fputs cons
  • vue+h5项目中调取微信扫一扫功能

    准备工作 1 引用微信jweixin module支持 可使用 npm install jweixin module save 2 使用微信扫一扫需登录微信公众号 gt 设置 公众号设置 gt 功能设置下的JS接口安全域名 配置安全域名 例
  • chatgpt赋能python:Python画散点图:用代码展现数据分布

    Python画散点图 用代码展现数据分布 Python是一种动态语言 易于学习和使用 并且在各种领域都有广泛的应用 其中一种常见的用途是数据可视化 特别是散点图 本篇文章将向您展示如何使用Python在Jupyter Notebook中绘制
  • c# 远程关机 重启 注销 小练习

    亲测小练习 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
  • 我的HTC G16 CHACHA A810e版手机如何解锁和一键root的

    之前用了很多方法 都无法将该手机进行解锁 unlock 后来 应用刷机精灵就解决了 里面对HTC的解锁进行了集成处理 无需登录HTC官网 使用该软件 刷了原厂系统 且把预装软件进行了卸载 非常方便 我的手机配置如下 刷机精灵为
  • 3D Web轻量化引擎HOOPS:轻松解决OSGB模型复杂性与性能挑战!

    在当今的数字时代 三维模型的创建和展示对于众多行业都至关重要 无论是用于游戏开发 虚拟现实体验 建筑设计还是工程仿真 高质量的3D模型都能够提供更真实的视觉效果和更精确的数据表示 然而 随着模型的复杂性增加 其数据量也迅速膨胀 这可能会导致
  • Kafka的生成者、消费者、broker的基本概念

    kafka是一款基于发布与订阅的消息系统 它一般被称为 分布式提交日志 或者 分布式流平台 文件系统或者数据库提交日志用来提供所有事物的持久化记录 通过重建这些日志可以重建系统的状态 同样地 kafka的数据是按照一定顺序持久化保存的 可以
  • sql总结喔

    一 数据库基础 如何开服务 2个 TCP IP协议 SQL Server MSSQLSERVER 系统数据库 master 核心 模板 model 模型 msdb 警告日志 tempdb 临时 数据库文件分为数据文件 mdf ndf 和日志
  • SPI通信原理和协议

    1 SPI原理超详细讲解 值得一看 https blog csdn net as480133937 article details 105764119 2 STM32 HAL库 STM32CubeMX教程十四 SPI https blog
  • 2021-11-11密码学

    对称密码体系中发送者和接收者使用同一个密钥加密和解密 对称 可逆 非对称密码体系中发送者使用接收者的公钥进行加密 接收者使用自己的私钥进行解密 非对称 五种对称加密算法总结 1 DES 已破解 不再安全 基本没有企业在用了 是对称加密算法的