加密算法笔记

ElGamal公钥密码和椭圆曲线密码体制 ElGamal公钥密码 基于有限域上离散对数问题的公钥密码体制,最著名的是ElGamal体制,是由T. ElGamal在1985年提出的 ElGamal有较好的安全性,同一明文在不同时刻会产生不同的密文 应用广泛,尤其数字签名方面的应用,著明的美国数字签名标准DSS就是ElGamal的一种变形。离散对数问题 设 p是素数,g 是 Zp* 的本原元:即 g1, g2, …, gp−1 在 mod p 阅读详情

对称算法的效率高,但是密钥的传输需要另外的通道。非对称算法RSA和DH可以解决密钥的传输问题。


DH密钥交换算法的作用是使通信双方可以在不安全的通道中建立一个相同的密钥,用于通信加密。

基本原理:

假设通信双方A和B,选定一个数g,g是可公开的

1.A随机选择一个数a,a是保密的

2.A计算g^a发送给B

3.B随机选择一个数b,b是保密的

4.B计算g^b发送给A

5.A收到B发送的g^b后,利用自己的密钥a,计算(g^b)^a

6.B收到A发送的g^a后,利用自己的密钥b,计算(g^a)^b

7.可以看出 (g^b)^a=(g^a)^b ,因此A和B就有了一个相同的“密钥”

通过上述通信过程可以看出,g,a和b是公开的,密钥可以通过g^a^b求得,因此,为了能够密钥不被破解,有以下新的计算方法:

模运算法则:

假设通信双方A和B,选定一个数g,一个质数p,g和p是可公开的

1.A随机选择一个数a,a是保密的

2.A计算(g^a)%p发送给B

3.B随机选择一个数b,b是保密的

4.B计算(g^b)%p发送给A

5.A收到B发送的(g^b)%p后,利用自己的密钥计算((g^b)%p)^a%p

6.B收到A发送的(g^a)%p后,利用自己的密钥计算((g^a)%p)^b%p

7.通过计算可以得到相同的密钥 ((g^b)%p)^a%p=((g^a)%p)^b%p=g^(a*b)%p ,因此A和B具有相同的密钥

整个通信过程中,g,a,b,p是公开的,假设  g^a%p=q,a=log(g,n*p+q),只能将n的值逐个代入才能求得a,因此 ,当a ,p是很大的质数时,通过g,p,很难得到a,同理,通过g,p也很难得到b

需要注意的是质数p不是随机选择的,生成的随机数a和b也要尽可能的随机,否则会很容易破解密钥

从上可以看出,多个通信方也可以使用上述的DH密钥交换算法


DH密钥交换算法无法验证通信双方的身份,因此,不能抵御中间人的攻击

------------------------------------------------------------------------------------------------


RSA算法的基本原理是基于大数难分解,通信方A产生一个密钥k,用通信方B的公钥加密K,然后将得到的密文发送给B,B用自己的私钥解密收到的密钥,就可以得到密钥了,RSA可以用于认证、密钥传输

RSA的密钥生成步骤:

1.通信方A随机选择两个不等的质数p和q

2.计算p和q的乘积n

3.计算n的欧拉函数φ(n)

4.随机的选择一个整数e,1<e<φ(n),并且e与φ(n)互质

5.计算e对于φ(n)的模反元素d即

ed=1(modφ(n))---->ed-1=kφ(n)

模翻元素d也就是使   ex+φ(n)y=1

6.将n和e封装成公钥,n和d封装成私钥

在RSA算法中,用到了p,q,n,e,d,φ(n),其中只有n和e是公开的,其中最为关键的是d,因为n,d组成了密钥

仅通过n和e推到d:

a.ed=1(modφ(n))  ------>需要知道e和φ(n)  

b.φ(n)=(p-1)(q-1)  ----------->需要知道p和q

c.n=pq ------->需要对n进行因式分解 才能得到p和q

因此,如果n是可以被分解的,则可以推算出d,这要造成了密钥会被破解,但是在实际过程中,对大整数的因数分解很难


加密要用公钥:

假设A要像B发送加密信息m,则A需要用B的公钥对m进行加密,m必须是整数,且m必须小于n

加密的过程就是:

m^e=c(mod n) ,将加密后的信息c发送给B

解密要用私钥:

B收到A发送过来的c之后,就用自己的私钥(n,d)进行解密,

c^d=m(mod n)  ,因此B可以知道加密前的信息m

公钥(n,e)只能加密小于n的整数m,那么如果要加密大于n的整数,有两种方法:

1.把长信息划分成若干段短消息,每段分别加密

2.选择对称性加密方法,用这种方法的密钥加密信息,再用RSA公钥加密对称性加密算法的密钥。




--------------------------------------------------------------------------------------------------------------

椭圆曲线加密算法

椭圆曲线在射影平面上满足方程:y2Z+a1xyz+a3yz2=x3+a2x2z+a4xz2+a6z3

运算法则:任意取椭圆曲线上两点P 、Q (若PQ重合,则做p的切线) 做支线交于椭圆曲线的另一点R‘,过R‘做y轴平行线交于R,规定P+Q=R’

椭圆曲线无穷远点0∞与椭圆曲线上一点P的连线交于P‘,过P‘做y轴的平行线交于P,所以有无穷远点0∞+P=P,无穷远点成为零元,同时,P‘称为P的负元


根据这个运算法则可以得到:如果椭圆曲线上的三个点A B C处于同一直线,那么A+B+C=0∞

k个相同的点P相加,记作kP, P+P+P=2P+P=3P

对于有限域Fp,这个域只有有限个元素:

1.Fp中只有p个元素,p为素数,0,1,2,....,p-2,p-1

2.Fp的加法法则为 a+b=c(mod p),即(a+c)mod  p  与  c mod p相同

3.Fp的乘法法则是axb=c(mod p)

4.Fp的除法法则是a/b=c(mod p),即axb-1=c(mod p) ,b-1也是一个0到p-1之间的整数,但满足bxb-1=1(mod  p)

Fp的单位元为1,零元是0 

并不是所有的椭圆曲线都适合加密。y2=x3+ax+b是一类可以用来加密的椭圆曲线,也是最为简单的一类,将这类椭圆曲线定义在Fp上,其中P需要满足,

选择两个满足下列条件的小于P(p为素数)的非负整数a、b

4a3+27b2≠0(mod p) 则满足下列方程的所有点(x,y),再加上无穷远点0∞,构成一条椭圆曲线

y2=x3+ax+b(mod  p)

其中x 和y属于 0到p-1之间的整数,并且将这条椭圆曲线标记为Ep(a,b)


椭圆曲线上的点结论:

1.无穷远点0∞是零元,有0∞+0∞=0∞,0∞+P=P

2.P(x,y)的负元是(x,-y),有p+(-p)=0∞

3.P(x1,y1),Q(x2,y2)和R(x3,y3))有如下关系:

x3=k2-x1-x2   mod  p

y3=k(x1-x3)-y1   (mod  p)

其中如果P=Q  则k=(3x2+a)/2y1   若 p≠Q 则 k=(y2-y1)/(x2-x1)



对于以下等式:

K=kG ,其中 K G为Ep(a,b)上的点,k为小于n(n为点G的阶)的整数

给定k G,根据加法法则,计算K很容易,但给定K和G,求k就相对困难了 

椭圆曲线进行加密通信的过程:

1.用户A选定一条椭圆曲线Ep(a,b),并取椭圆曲线上一点 作为基点G

2.用户A选择一个私有密钥k,并生成公开密钥 K=kG

3.用户A将Ep(a,b)和点K G传送给用户B

4.用户B接到信息后,将待传输的明文编码到Ep(a,b)上一点M,并产生一个随机整数r(r<n)

5.用户B计算点C1=M+rK C2=rG

6.用户B将C1  C2传给用户A

7.用户A接到信息后,计算C1-kC2 结果就是点M 。

C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M

再对M进行解码就可以看见明文了


密码学中,描述一条Fp上的椭圆曲线,常用到的六个参量

T=(p,a,b,G,n,h)p,a,b用来确定一条椭圆曲线 G为基点 n为点G的阶 h是椭圆曲线上所有点的个数m与n相除的整数部分

这几个参量取值的选择 一般满足以下条件:

1.p越大越安全。但越大,计算速度会变慢,200位左右就可以满足一般安全要求

2.p≠n*h

3.pt≠1(mod n)1≤t<20

4.4a3+27b2≠0  (mod  p)

5.n为素数

6.h≤4



椭圆曲线在软件注册保护中的应用:

软件作者按如下方法制作注册机(签名过程)

1.选择一条椭圆曲线Ep(a,b) 和基点G

2.选择私有密钥k(k<n,n为G的阶),利用基点G计算公开密钥K=kG

3.产生一个随机整数r(r<n)计算点R=rG

4.将用户名和点R的坐标值x和y作为参数 计算SHA,Hash=SHA(username,x,y)

5.计算sn=r-Hash*k(mod p)

6.将sn和Hash作为用户名username的序列号

软件验证过程如下:(软件中存有椭圆曲线Ep(a,b) 和基点G 公开密钥K)

1.从用户输入的序列号中,提前sn以及Hash

2.计算点R=sn*G+Hash*k(mod p)如果sn和Hash正确 其值等于软件作者签名过程中点R(x,y)的坐标 因为

sn=r-Hash*k(mod  p)

sn*G+Hash*K=R

3.将用户名和点R的坐标值x y作为参数 计算H=SHA(username,x,y)

4.如果H=hash则注册成功否则失败

作者签名过程中用到了 椭圆曲线Ep(a,b)  基点G 私有密钥k 及随机数 r

验证用到了 椭圆曲线Ep(a,b) 基点G 公开密钥K









































【Python】关于加密算法的实现 笔记梳理 前言: 因为主管数据,数据安全问题比较常见,今天遇到一个业务场景,较多数据加密的处理,结合最近优化数据安全流程的问题,分享下对数据加密算法的理解。 定义 数据加密:对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码为“密文”,只能在输入相应的密钥之后才能显示出原容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。 简单理解: 算法分类 目前主流的分法有2类,对称加密、非对称加密,当然也还有分3类的,新增单向加密(Hash 阅读详情

相关推荐

Latex在VSCODE中编译报错`Recipe terminated with error. Retry building the project.

Latex在VSCODE中编译报错Recipe terminated with error. Retry building the project. 1 报错提示: Recipe terminated with error 2 报错原因 大概率的原因是因为latex没有添加到系统环境变量中,所有设置的编译工具没有办法找到才出现的这种情况 3 解决方案 请按照如下方式进行系统变量的添加 对windows,win+R 然后输入sysdm.cpl 在高级中选择环境变量 找到path环境变量,将txtlive中

呆呆象呆呆的博客 3万+

ECC椭圆曲线加密算法原理

   比特币使用椭圆曲线算法生成公钥和私钥,选择的是secp256k1曲线。与RSA(Ron Rivest,Adi Shamir,Len Adleman三位天才的名字)一样,ECC(Elliptic Curves Cryptography,椭圆曲线加密)也属于公开密钥算法。   一、从平行线谈起     平行线,永不相交。没有人怀疑把:)不过到了近代这个结论遭到了质疑。平行线会不会在很远...

fangxiangeng的博客 1867

用Python实现一个猜密码的程序

我们用Python实现猜密码

sk6584631_sz的博客 1260

椭圆曲线加密原理与应用

由于RSA、AES等国际算法面临高强度算法禁售和被部署后门风险,我国基于ECC椭圆曲线,自研SM2/SM3/SM4/SM9一套安全算法。根据国家整体战略,金融及重要领域要逐步实现国密算法替换,另根据人民银行总体规划,在2022年金融行业要全面应用国密算法。在FireFly移动金融开发平台中,完善的提供了支持国密算法的加解密算法包。为了更好的使用和推广国密算法,下面具体分析ECC椭圆曲线的加密原理。一条椭圆曲线是在射影平面上满足方程所有点的集合,且曲线上的每个点都是非奇异(或光滑)的。

m0_59598029的博客 8038

[学习笔记]Esp32 + 4G模块,随身wifi,ppp拨号上网

Esp32S3 + 4G模块制作随身WIFI教程

weixin_45595548的博客 7412

指纹浏览器降维打击(下):Cloudflare Turnstile 与 hCaptcha 的底层交互逻辑

本文将深度拆解:Turnstile 与 hCaptcha 的 Iframe 沙箱通信机制,动态混淆 JS 与 PoW(工作量证明)的物理破解法则,以及如何通过 C++ 底层事件合成与环境基因强绑定,实现验证码的“无感过验”。

数据知道的博客 421

ECC(椭圆曲线密码编码学)简介

参考:ECC加密算法入门介绍 ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)属于公开密钥算法。 一、平行线 假设平行线相交于无穷远点P∞,那么所有直线都相交,且只有一个交点。为与无穷远点相区别把原来平面上的点叫做平常点。无穷远点的性质: 直线上的无穷远点只能有一个。 平面上一组相互平行的直线有公共的无穷远点。 平面上任...

书山有路勤为径 8895

Codex 100个真实案例 - 用AI做英语单词计划学习工具(记忆曲线+测验)

背单词是英语学习的基本功,但市面上的背单词 APP 要么收费、要么广告太多。本案例用 Codex 从零打造一个 **英语单词计划学习工具**,实现 SM-2 间隔重复算法(Anki 的核心算法)、单词本增删改查、多种测验模式(选择题/拼写/听写)、TTS 发音播放,以及学习数据的可视化统计图表。全程用自然语言驱动 Codex,用 Python 写后端逻辑 + 终端 UI,打造你的私人背单词助手!

yueyeguzhuo的专栏 200

Reor加密算法解析:保护笔记内容的技术细节

在当今数字化时代,笔记应用已成为个人和专业工作中不可或缺的工具。然而,随着笔记中包含的敏感信息日益增多,数据安全问题变得愈发突出。Reor作为一款自组织AI笔记应用(Self-organizing AI note-taking app),采用本地运行模型的方式,为用户提供了数据隐私和安全的额外保障。本文将深入探讨Reor中用于保护笔记内容的加密算法和安全机制,帮助用户理解其数据是如何被保护的。 ...

gitblog_00713的博客 354

YOLOv8改进策略【Conv和Transformer】| CVPR-2023 BiFormer 稀疏自注意力,减少内存占用

本文记录的是利用双级路由注意力机制优化的目标检测网络模型。传统的复杂度高,随着输入空间分辨率增加,计算量呈平方增长,导致严重的可扩展性问题。而本文所使用的在获取全局信息的同时,通过区域到区域路由和令牌到令牌注意力的合理设计,减少了不必要的计算量。BiFormer: Vision Transformer with Bi-Level Routing Attention采用四阶段金字塔结构,与一些先进的视觉Transformer类似。在每个阶段,首先使用重叠的补丁嵌入(在第一阶段)或补丁合并模块(在第二到第四阶段

Limiiiing的博客 613

【深度学习】什么是自回归模型?

自回归模型是一种重要的时间序列模型,通过利用过去的值来预测当前或未来的值。它在统计学、经济学、自然语言处理等领域有广泛的应用。自回归模型的简单性和可解释性使其成为许多应用的首选,但在更复杂的情况下,可能需要结合其他模型如移动平均模型(MA模型)或混合模型(如ARIMA)来更好地捕捉时间序列中的模式。扩散模型(Diffusion Model)和自回归模型(Autoregressive Model)是两种不同的生成模型,各自有独特的特点和应用场景。

q742971636的博客 1670

2020小迪安全第六天笔记-加密算法

笔记来源视频:【小迪安全】web安全|渗透测试|网络安全(6个月线上培训全套)_哔哩哔哩_bilibili​​​​​​ 由于本人之前已经学习过了应用密码学的相关内容以及进行过与加密算法相关的大创项目,并且网络上有大部分在线加解密工具,除了别人自定义的相关复杂加密算法外,一般只要花一定时间,数据就能得到一定的加密、解密,所以小迪本次培训的内容所做的笔记并不多,仅仅针对了个人注意细节。 SQL注入时,要按照网站设定的规矩进行注入,比如 该网址中的id=MQ== and 1=1&name=YW5

weixin_51566416的博客 4855

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

「笔记」加密算法

加密算法的种类 哈希算法、对称加密算法、非对称加密算法 哈希算法 严格意义上,哈希算法不属于加密算法,但它在信息安全领域起到了很重要的作用 用于生成信息摘要,用以验证原信息的完整性和来源的可靠性 生成信息摘要的过程叫做签名,验证信息摘要的过程叫做验签 常用的哈希算法:MD5(128位)、SHA系列(更安全) 对称加密算法 流程:明文通过密钥进行加密生成密文,同时密文通过秘钥进行...

DChuan 555

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

DES加密算法笔记

DES加密逻辑

Nike_name的博客 635

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

加密算法学习笔记

对称加密与非对称加密解释:一旦加密就不能反向解密得到密码原文种类: Hash散列算法, 散列算法, 摘要算法等(哈希算法又称散列算法)用途:一般用于效验下载文件正确性,一般在网站上下载文件都能见到;存储用户敏感信息,如密码、 卡号等不可解密的信息。常见的不可逆加密算法:1.md5(Message Digest Algorithm MD5) 消息摘要算法52.SHA-13.HMAC4.HMAC-MD5。

享受生活的个人博客 976

Java AES加密算法总结笔记

加密算法 对称加密算法 symmetric-key cryptography 加密和解密使用相同密匙 常用对称加密算法 DES AES 非对称加密算法 asymmetric-key cryptography 加密和解密使用不同密匙 常用非对称加密算法是RSA算法 AES加密 Advanced Encryption Standard 高级加密标准,是一种对称加密算法,取代了DES加密算法,因为AES安全性更高 https://zhuanlan.zhihu.com/p/39601

m0_47135641的博客 1016

JWT令牌,常见加密算法,Base64笔记

JWT令牌: 是客户端和服务器进行数据安全传输的一种标准: 组成: 头 (指定签名的加密算法方式), 负载(主要子自定义信息内容), 签名(头部Base64+负载Base64通过加密算法和密钥生成的) 作用:防止令牌信息被篡改; JWT令牌优点: 1.jwt基于json,非常方便解析 2.可以在令牌中自定义丰富的内容,易扩展; 3、通过非对称加密算法及数字签名技术,JWT防止篡改,安全性高。 4、...

没有 4311

ECC椭圆加密算法学习笔记

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、什么是椭圆曲线加密算法?1.实数域上的椭圆曲线(1)椭圆曲线加密算法中的相关概念(2)实数椭圆曲线(3)椭圆曲线上的群2.有限域上的椭圆曲线(1)模素数P运算(2)有限域模素数上的加法(3)有限域椭圆曲线上的点的阶3. 椭圆曲线中的离散对数问题(椭圆曲线加密)二、使用步骤1.引入库2.读入数据总结 前言 此为自学笔记,参考文献(包括参考的所有理论的链接)在此先标明。 ECC椭圆曲线加解密原理详解(配图) 区块链中的数学.

qq_43087667的博客 1489

安全加密算法笔记

图解密码技术》笔记。

weixin_50043572的博客 846
上一篇: Reverse Words in a String
下一篇: web.xml 中的listener、 filter、servlet 加载顺序及其详解
Fivesplus
博客等级 码龄12年 1粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值