零知识证明-非对称加解密算法(三)

news/2024/9/18 15:20:04/ 标签: 算法, 非对称加密算法, rsa, 加解密, 签名验证

前言
非对称加解密算法 ,就有对称加解密算法
1:对称算法
定义
对称算法加解密双方使用一个密钥。即加密秘钥和解密秘钥相同。
对称加密又分为:分组加密和流加密
分组加密
分组加密是每次只能处理特定长度的一块数据的一类密码算法,这里的“一块”就称为分组(block)。一个分组的比特数就称为分组长度(block lenght)。

常见的分组算法有:DES、3DES、DESX、Blowfish、IDEA、RC2、RC5、RC6和AES,以及中国的SSF33、SM1、SM4。
分组加密又可以根据其迭代模式分为ECB,CBC,OFB,CFB,CTR。

最简单的就是 异或(XOR) ⊕

明文 c=88
密码 p = 119 随便选的这个数字

加密
密文 e = 88 ⊕ 119 = 47
88(01011000) ⊕ 119(01110111) =47(00101111)

解密
明文 c = e ⊕ p = 47 ⊕ 119= 88
47(00101111) ⊕ 119(01110111) =88(01011000)

代码实现

package mainimport "fmt"func main()  {valuea ,valueb := 0,0for ;; {fmt.Printf("please input value1 and  value2:")if _,err := fmt.Scan(&valuea,&valueb);err !=nil{fmt.Printf("input error")break}fmt.Printf("%v(%08b) ⊕ %v(%08b) =%v(%08b) \n",valuea,valuea,valueb,valueb,valuea^valueb,valuea^valueb)}fmt.Printf("ready exit \n")
}

2:非对称算法
非对称算法也叫公钥算法,在公钥密码系统中,加密和解密使用的是不同的密钥,这两个密钥之间存在着相互依存关系:即用其中任一个密钥加密的信息只能用另一个密钥进行解密。
这使得通信双方无需事先交换密钥就可进行保密通信。其中加密密钥和算法是对外公开的,人人都可以通过这个密钥加密文件然后发给收信者,这个加密密钥又称为公钥;
而收信者收到加密文件后,它可以使用他的解密密钥解密,这个密钥是由他自己私人掌管的,并不需要分发,因此又成称为私钥,这就解决了密钥分发的问题。

主要的公钥算法有: RSA、 DSA、 DH 和 ECC。
以ras为例
1>RSA算法原理
RSA算法的基于这样的数学事实:两个大质数相乘得到的大数难以被因式分解。

2> 加解密 步骤
(1):选取两个大质数p,q,计算N = p q 及 φ ( N ) = φ § φ (q) = (p-1) * (q-1)
互质关系:如果两个正整数,除了1以外,没有其他公因子,我们就称这两个数是互质关系
φ(N):叫做欧拉函数,是指任意给定正整数N,在小于等于N的正整数之中,有多少个与N构成互质关系。
如果n是质数,则 φ(n)=n-1。
如果n可以分解成两个互质的整数之积, φ(n) = φ(p1p2) = φ(p1)φ(p2)。即积的欧拉函数等于各个因子的欧拉函数之积
(2):选择一个大于1 小于φ(N)的数e,使得 e 和 φ(N)互质
e其实是1和φ(N)之前的一个质数
(3):计算d,使得de=1 mod φ(N) 等价于方程式 ed-1 = k φ(N) 求一组解。
d 称为e的模反元素,e 和 φ(N)互质就肯定存在d
模反元素是指如果两个正整数a和n互质,那么一定可以找到整数b,使得ab被n除的余数是1,则b称为a的模反元素。
可根据欧拉定理证明模反元素存在,欧拉定理是指若n,a互质,则:
aφ(n) ≡ 1(mod n) 及 aφ(n) = a * aφ(n)-1, 可得a的 φ(n)-1 次方,就是a的模反元素。
(4):(n, e)封装成公钥,(n, d)封装成私钥。

eg: p=53 q =59 //这里选择2个小的素数,否则演算,计算量太大
n=53 * 59 = 3127
φ(n)=φ(3127)=(53-1)(59-1)=3016
选e=[1,3016) 中的 3 ,e=3
d * e = 1 mod φ(n) = d * 3 = 1 %3016
所以 d = 2011
公钥 (n,e)= (3127,3)
私钥 (n,d)=(3127,2011)

明文 m = 89
公钥用于加密、私钥用于解密
用公钥加密
密文 c = me mode n = 893 %3127 = 1394
用私钥解密
明文 m2 = cd mod n = 13942011 %3127=89

私钥用于签名、公钥用于验签名
摘要 = hash256(明文) = hash256(89) 这里省略

生成签名 用私钥
s= md mod n=89 2011 %3127 = ?
89 2011 = 16722583105308279104923867509715064099387784608129733532437680187247
01215476410680999915339774392775625618233497328039884105689289924625582672941711
14563895043871648877622204606536874504743584113292955847998021758180183927990417
49483897500785819175507565180862762681431353853013275102682395465719327412623371
28258050540279247025052968465776417477732907653405452503367096267673308971002206
96013929839366953469750761508775627460108983472889315804374409770037901189582126
58584765838551342604665358768706709286758455626768426827094918375880196280792838
33242284123972362692542970870210820376163435285317114274868254235528576051694461
71886867007589261526018877015824351473905037078170385773571206872142783198744172
37420356120173721472673067303174336047691352905498282982912556200369171268385120
35368134353869874578285960630415249362175228225147658323679663388146810809892417
34773762158899470010728479221462789538011196143235172295578671268192706789018415
01885133453915904484211096564142085081941233809369050230936738583285768617029750
86855854029263209898380849484341544160701565220283509506919749641513286320938181
74426329777153490925965948182708990967298527879750649938514756880817748425094982
18528844063701501465673309513211313717073444822078926546639912596559101776600291
95289512865177970012200681378332786352832156519536532812801091036293225470401223
32278480265698762935823434005119051663266223842380021326366079884015190554544757
33597277984129017297117077357965207375402877434119200886062896909104440409151485
22743462761578806274987697882655739546874286280567384147637584423420286898409862
06466335795738478208695453058762360993731422884437868861327934497662202657334729
70236985545597451542028429242343037658892139587600615265499948144118327954449465
35618795250490495375905698154597385010130752598856956900608700719832715964840532
24468034509793798980275070900414799021001652242043411131078254314388221096120089
29940764075886214680043890032577058149842407181571895522992650418441812514638050
74227220844356190425089580935029400020627915985927252389649246619559582482300123
54197818896427053734072948991126640475317464835569739191294816223693705963022771
74389261583712633606772420414866768733271883540367820750129689834409888436179409
79069494913901559652601008376112353715145897343526707491237847627803956357203979
32488398183539195531355629591575375980588991352299880617507113151223829123351267
38747035476138207179442159372387291324507010172254791123218745267066126158317009
61669009554099745263515225991384855384573902383889926414875574409006054378516445
72615735070655816819992318033133397352135540960674920556941926967176694849651610
63937756029486720177421753457661415872296229038633165753788154435164086513111898
11533612558006602515157339354685670227296222116077251263299481829968926775094390
49381095343453455669645799589043581137242807466717817336806439552748353887282238
51625631811789517654670280214107956893132243723685465932839910155750094832737778
50673337898123602954848673933575733902485338477466107390230119432960922704684283
48234399487763421817649560864944290073299489909151306331586949188024680434310502
86315823429151473246501833787084960016712392353065321715828858205683528640724515
98283038085467122414386158696038747851276510349977799877704030278732062050372941
69418641722401217855825517675095640553262856773390176905315186450213572617147504
89606160010003274195219724096285452561873678385841307500050432789610118206122774
83813649349446528839590415154647713580610495836553676580266311849974148636131510
27421735097426663505594232582524772119777264433643630855801556736992349566635395
55071065179017867436478530674868755873936214732855625699896586123250163536023602
46769939250810530377624055909322011694251321310059768288035223058621511296187291
08733718490134528313611337300091548944728868954706289021446131823641591812726819
40270036421978674519568461112149439540979564871459345931696461369788565080942032
2710802420489

please input value1,power and mod:89 2011 3127
(89 ^ 2011)mod 3127 = 545 怎么计算的 看后面的代码 eth 有专门函数

s= md mod n=89 2011 %3127 = 545 //签名文件

用 明文m=89 s=545 给对方,对方用公钥验证
明文 m1 = se mod n = 5453 %3127 = 161878625 % 3127 = 89
如 m1 == m mod n ,验证成功,签名OK

大数N次方 上代码

package mainimport ("fmt""github.com/ethereum/go-ethereum/common/math""math/big"
)func main()  {valuea ,power,mod := 0,0,0//89 ^2011 %3127for ;; {fmt.Printf("please input value1,power and mod:")if _,err := fmt.Scan(&valuea,&power,&mod);err !=nil{fmt.Printf("input error")break}a := int64(valuea)b := int64(power)big1 := math.BigPow(a,b)m := big.NewInt(int64(mod))big2 := m.Mod(big1,m)fmt.Printf("(%v ^ %v)mod %v = %v \n",valuea,power,mod,big2)}fmt.Printf("ready exit \n")
}

总结:
公钥 (n,e)= (3127,3)
私钥 (n,d)=(3127,2011)
明文 m
加密 密文s = me mod n 解密 明文 m1 = sd mod n
签名 签文s = md mod n 验证 明文 m1 = se mod n
是不是很简单

3:如果觉得有用,麻烦点个赞,加个收藏


http://www.ppmy.cn/news/1517198.html

相关文章

WPF 手撸插件 五 消息总线

虽然暂时不知道该如何将消息总线集成到插件系统中,但是让我先学习起来吧,本文主要来说说我最近学习的Reface.EventBus Reface.EventBus有两个版本,分别支持.Net Framework和 .Net Core。 我们这里先说支持.Net Framework的版本,先…

【问题记录】mysql报错 ,mysql2 和 mysql 5.

错误2 和 错误5 都是由于注册表有问题: 由于我之前安装过MySQL,导致之前的配置没有删除。 解决: 搜索打开注册表编辑器: 注册表中找到MySQL: 修改路径: "D:\develop\mysql-8.0.39-winx64\bin\mysqld&quo…

边缘物联网平台AIoTedge推荐

AIoTedge是一个创新的智能边缘计算平台,它通过边云协同的架构设计,实现了多点部署和分布式计算,提高了数据处理的速度和效率,同时确保了数据的安全性和隐私性。平台具备强大的分布式AIoT处理能力,适用于多种场景&#…

【中学教资-信息技术】图像/音频/视频文件大小的计算

图像/音频/视频文件大小的计算 1 图像文件2 音频文件3 视频文件4 例题5 总结 视频讲解:音频文件大小/视频文件大小计算-失舵之舟 1 图像文件 压缩比原始大小/被压缩之后大小 颜色深度:指图像中每个像素所占的二进制位数(bit) n位…

linux查看系统安装时间命令,找出Linux操作系统(OS)安装日期和时间

你可能想知道你的计算机上何时安装了Linux操作系统,即OS的安装日期和时间,使用tune2fs、dumpe2fs、ls、basesystem、setup、setuptool命令能出来结果。请注意,如果你从模板安装了操作系统,那么它将显示模板生成日期,而不是实际操作系统安装日期。 方法1:如何使用tune2fs…

Solidity入门——receive()和fallback()以及交易数据的简单介绍和运用

如何运用payable和transfer发送交易 在以太坊智能合约中,payable关键字和.transfer()方法它们在智能合约中是如何被使用的。 payable关键字 payable关键字用于声明合约或函数可以接受以太币。当你在一个函数或合约前面加上payable修饰符时,你允许该函…

java程序优化

Java程序的性能优化是一个复杂但非常重要的过程,它涉及多个方面。首先,我们需要识别性能瓶颈的具体位置,这通常可以通过性能分析工具(如JProfiler, VisualVM等)来完成。以下是一些通用的优化策略: 代码层面…

软件测试学习笔记丨Pytest配置文件

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/31774 一、Pytest配置文件 1.1 pytest.ini的定义 pytest.ini是pytest的配置文件;可以修改pytest的默认行为;不能使用任何中文符号,包括汉字、空格、引号、…

Kafka分布式集群部署实战:跨越理论,直击生产环境部署难题与解决方案,性能调优、监控与管理策略大揭秘,轻松上手分布式消息中间件

本文介绍kafka的集群如何部署和安装,1-4章理论知识,第5章详解集群的部署,部署Kafka之前需要先部署好分布式的Zookeeper,不喜欢理论的可以直接看第5章,欢迎大家一起探讨技术! Zookeeper集群部署参考文章&…

JavaScript 数据结构 ==== 二叉树

目录 二叉树 结构 二叉树和二叉搜索树介绍 1.创建树 2.插入一个键 3.树的遍历 中序排序 先序遍历 后序遍历 4.搜索树中的值 5.删除节点 二叉树 在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtre…

【数据结构】优先级队列 — 堆

文章目录 前言1. 优先级队列1.1 概念1.2 特性 2. 堆2.1 概念2.2 存储方式 3. 堆的模拟实现3.1 堆的创建3.2 堆的插入3.3 堆的删除 4. PriorityQueue4.1 注意事项4.2 构造器介绍4.3 常用方法介绍 5. 经典题型6. 结语 前言 我们之前学习过队列,它是遵循先进先出原则的…

全国教育大模型完成备案已达40个

全国教育大模型完成备案已达40个 近期,教育行业正迎来一场由人工智能引领的革新风暴,近日,职业培训机构粉笔上线了AI老师“粉笔头”,被称为首个职教行业的垂直大模型。据最新统计,截至今年6月,我国教育领域…

中资优配:国家推动大规模投资更新能源重点领域设备

8月21日,国家开展变革委、国家动力局联合印发《动力要点领域大规模设备更新施行方案》(以下简称《方案》),清晰将要点推进施行煤电机组节能改造、供热改造和灵活性改造“三改联动”,输配电、风电、光伏、水电等领域完成…

mac Let‘s Encrypt 免费SSL证书申请

1、安装certbot brew install certbot 2、执行命令 sudo certbot certonly -d "iot.xxx.cn" --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory 3、域名解析配置 4、按Enter继续 5、生成证书 fullchain.pem 是证书文…

GPS北斗授时服务器(网络时钟系统)助力金融领域

GPS北斗授时服务器(网络时钟系统)助力金融领域 GPS北斗授时服务器(网络时钟系统)助力金融领域 摘 要:首先对计算机网络时间同步相关技术进行了介绍,然后阐述了时间同步技术在现代计算机网络中的应用与发展,最后指出时间同步网络在…

【奇某信-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

嵌入式机器视觉的流水线分拣机器人:OpenCV、 FreeRTOS、 TensorFlow(代码详解)

一、项目概述 在现代自动化生产中,分拣机器人作为提高生产效率和准确度的重要工具,正逐渐成为工业流水线的核心组成部分。本项目旨在设计一款基于嵌入式机器视觉的流水线分拣机器人,通过高效的图像处理与实时控制技术,实现对物品…

【XR】SDK的接口规划与设计

【XR】SDK的接口规划与设计 1. **模块化与扩展性****设计思路****设计理由** 2. **状态管理的清晰性****设计思路****设计理由** 3. **用户体验与易用性****设计思路****设计理由** 4. **稳定性和容错性****设计思路****设计理由** 5. **性能优化与实时性****设计思路****设计理…

C++中 inline 的含义是什么?

在C中,inline是一个关键字,它向编译器发出一个请求(注意,这是一个请求而不是命令),请求编译器尝试将函数的调用替换为函数体本身的代码。这样做的目的是减少函数调用的开销,特别是对于那些体积小…

从小鹏看自动驾驶发展趋势

 小鹏:端到端大模型量产落地,体验升级成下阶段主线 算法端,小鹏已量产国内首个端到端大模型,其模型采用分段式结构,分为神经网络 XNet、规控大模型 XPlanner 以及大语言模型 XBrain 三部分。数据闭环方面&#xff0…