当前位置: 首页 > article >正文

密码学(二)---DES、SM、RSA

在使用本博客提供的学习笔记及相关内容时,请注意以下免责声明:
信息准确性:本博客的内容是基于作者的个人理解和经验,尽力确保信息的准确性和时效性,但不保证所有信息都完全正确或最新。
非专业建议:博客中的内容仅供参考,不能替代专业人士的意见和建议。在做出任何重要决定之前,请咨询相关领域的专业人士。
个人责任:使用本博客内容的风险由用户自行承担。作者不对因使用本博客内容而导致的任何直接或间接损失承担责任。
版权声明:本博客中的所有内容均为作者原创,如需转载,请注明出处。同时,若有引用他人作品,也将尽力标明出处,如有侵权请及时联系作者。
链接免责:博客中可能包含外部链接,作者对这些链接所指向的内容不负责任,访问此类链接需谨慎。
感谢您的理解与支持!希望本博客能够为您的学习提供帮助。

对称加密算法总结*

DES加密过程:

110011-->

首位和为行:11-->3

中间内容为列:1001-->9

--->14

---->1110

SM算法*

国产密码算法:是指由国家密码研究相关机构自主研发,具有相关知识产权的商用密码算法,目前已 经公布的国产密码算法如下:

公钥密码分类*

■ 目前公认的比较安全的公钥密码有两类:

. 基于大素数因子分解困难性:RSA

· 基于离散对数问题困难性:DH、Elgamal、ECC   (椭圆曲线密码)

RSA算法

■RSA 算法是非对称算法,由Ronald Rivest、Adi Shamir、Leonard Adleman三人发明。RSA 算法中, 公钥和私钥都可以用于加密消息,用于加密消息的密钥与用于解密消息的密钥相反。

■ RSA算法提供了一种保护网络通信和数据存储的机密性、完整性、真实性和不可否认性的方法。 ■SSH、OpenPGP、S/MIME和SSL/TLS都依赖于RSA 进行加密和数字签名功能。

■ 公钥密码思想是将传统密码的密钥K一分为二,分为加密钥Ke和解密钥Kd, 用加密钥Ke控制加密,用解 密钥Kd 控制解密。

■ 每个用户都将自己的姓名、地址和公开的加密钥等信息在KMC (密钥管理中心)登记,将公钥记入共享的 公钥数据库PKDB(Public Key Database)。

RSA三种模式-加密模式

■ (1)加密模式(确保数据的秘密性\机密性)

■ 发方:

·①A首先查PKDB,查 到B的公开的公钥KeB

·②A 用KeB加密明文M得到密文C:C=E(M,KeB)

·③A发密文C给B

■ 收方:

·①B接受C

·②B用自己的私钥KdB解密C,  得到明文M=D(C,KdB)

RSA 三种模式-认证模式

■ (2)认证模式(确保数据的真实性)

■ 发方:

·①A用自己的私钥KdA加密M, 得到密文C:C=E(M,KdA)

·②A发密文C给B

■ 收方:

· ①B接受C

·②B查PKDB, 查 到A 的公开的公钥KeA

·③用KeA解密C得到明文M:M=D(C,KeA)

RSA 三种模式-混合模式

■ (3) 加密认证混合模式(同时确保数据的秘密性和真实性)

■ 发方:

·①A 用自己的私钥KdA 加密M, 得到中间密文S:S=E(M,KdA)

·②然后A查PKDB, 查到B的公开的公钥KeB

·③A用KeB加密S得到最终的密文C:C=E(S,KeB) · ④A 发密文C 给B

■ 收方:

·①B接受C

·②B用自己的私KdB 解密C,得到中间密文S=D(C,KdB)

·③B查PKDB, 查 到A的公开的公钥KeA。用 KeA 解密S得到明文M,M=D(S,KeA)

非对称加密算法RSA-  相关数学基础(1)

■欧拉函数:对于一个正整数n,小 于n且与n互素(最大公约数只能是1)的正整数的个数,记为φ(n)。

·对于一个素数n, 可知φ(n)=n-1

·对于两个素数p和q,它们的乘积满足n=p*q,则可知 ·φ(n)=(p-1)*(q-1)

■欧几里得算法:gcd(a,b)表示a和b的最大公约数,gcd(a,b)=1,表示a,b最大公约数为1,说明a和b互质。

■同余:两个整数a,b,若它们除以整数m 所得的余数相等,则称a与b对于模m 同余,或a同余b模m, 记作 a=b(mod m)。

· 例如:40=1(mod 13),26=2 (mod 12)。

■求解乘法逆元

·5×d=1 mod 72,求d ?

·5×d-1=n×72(n=1,2,3,4...)

· 得:当n=2,d=29

非对称加密算法RSA计算

步骤

操作

是否保密

随机选择两个大素数p和q

p和q保密

计算n=p×q

n公开

计算φ(n)=(p-1)(q-1)

φ(n)保密

随机选取一个正整数e,1<e<φ(n)且gcd(e,φ(n))=1互素

e公开

根据e×d=1 mod φ(n),求出d

d保密

加密运算C=Me mod n,解密运算M=Cd mod n

RSA密码公开密钥(公钥)Ke=<n,e>,保密的解密钥(私钥)Kd=<p,q,d,φ(n)>

案例:

设素数p=5,q=17, 并令e=11, 明文M=2, 则RSA 的加密操作如下:(自己换着试一下)

已知:p=5 q=17 e=11 M=2

n=p*q=85

φ(n)=(p-1)(q-1)=4*16=64

e=11

ed=1modφ(n)

11d=64n+1

d=35,n=6

C=M^e mod n = 2^11 mod 6 =

M=C^d mod n = ....

■设在RSA 的公钥密码体制中,公钥为 (e,n)=(7,55),则私钥d=(66)。

.A.8           B.13         C.23         D.37

RSA密码的安全性

■ 因子分解攻击:小合数的因子分解是容易的,然而大合数的因子分解却是十分困难的。

■ 为了确保RSA 密码的安全,必须认真选择RSA 的密码参数,各个参数选择如下:

·应 用RSA 密码,应当采用足够大的整数n,p 和q要足够大并且p和q应为强素数。

·一般加密密钥和认证密钥选n为1024位,而平台根密钥和存储根密钥则选n为2048位。

·为了使加密速度快,e 的二进制表示中应当含有尽量少的1。

·为了使解密速度快,希望选用小的d, 但是d太小也是不好的。当d小于n的1/4时,已有求出d的攻击方法。

·不要许多用户共用一个模数n。


http://www.kler.cn/a/283662.html

相关文章:

  • MyBatis——增删查改(XML 方式)
  • vscode远程连接服务器并启用tmux挂载进程
  • 专题十八_动态规划_斐波那契数列模型_路径问题_算法专题详细总结
  • Microsoft 365 Exchange如何设置可信发件IP白名单
  • 【vue2.0入门】vue基本语法
  • 探索Pillow库:Python图像处理的瑞士军刀
  • c++中的匿名对象及内存管理及模版初阶
  • 【系统架构师软考】计算机网络知识(四)
  • 在类Unix操作系统(如Linux)上运行Windows应用程序方法小记
  • flutter和原生Android以及IOS开发相比有什么优缺点?
  • Gradio学习——图像流输出
  • ShenNiusModularity项目源码学习(3:用户登录)
  • MFC工控项目实例之七点击下拉菜单弹出对话框
  • Python使用总结之Flask-SocketIO介绍
  • 查看显卡cuda版本
  • PD协议沟通过程
  • 最大池化、非线性激活、线性层
  • 【C++ Qt day3】
  • PrimeVue DataTable 属性值解析
  • validationtools中按键测试选项光标移除
  • JavaEE 第18节 TCPUDP优缺点(对比)
  • 基于SVM的手势识别,SVM工具箱详解,SVM工具箱使用注意事项
  • 【策略方法】设计模式:构建灵活的算法替换方案
  • 已经git push,但上传的文件超过100MB
  • 都2024了,还在为uniapp的app端tabbar页面闪烁闪白而发愁吗
  • AI:引领未来的科技浪潮