密码学(二)---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。

相关推荐
alphaTao3 分钟前
LeetCode 每日一题 2024/11/18-2024/11/24
算法·leetcode
kitesxian11 分钟前
Leetcode448. 找到所有数组中消失的数字(HOT100)+Leetcode139. 单词拆分(HOT100)
数据结构·算法·leetcode
VertexGeek1 小时前
Rust学习(八):异常处理和宏编程:
学习·算法·rust
石小石Orz1 小时前
Three.js + AI:AI 算法生成 3D 萤火虫飞舞效果~
javascript·人工智能·算法
hzyyyyyyyu2 小时前
内网安全隧道搭建-ngrok-frp-nps-sapp
服务器·网络·安全
jiao_mrswang2 小时前
leetcode-18-四数之和
算法·leetcode·职场和发展
qystca2 小时前
洛谷 B3637 最长上升子序列 C语言 记忆化搜索->‘正序‘dp
c语言·开发语言·算法
薯条不要番茄酱2 小时前
数据结构-8.Java. 七大排序算法(中篇)
java·开发语言·数据结构·后端·算法·排序算法·intellij-idea
今天吃饺子2 小时前
2024年SCI一区最新改进优化算法——四参数自适应生长优化器,MATLAB代码免费获取...
开发语言·算法·matlab