java ecdh秘钥交换_DH密钥交换和ECDH原理(转)

下面我们以Alice和Bob为例叙述Diffie-Hellman密钥交换的原理。

1,Diffie-Hellman交换过程中涉及到的所有参与者定义一个组,在这个组中定义一个大质数p,底数g。

2,Diffie-Hellman密钥交换是一个两部分的过程,Alice和Bob都需要一个私有的数字a,b。

下面是DH交换的过程图:

9fadcdfe659c4fc70b7e8cb8798b7b20.png

本图片来自wiki

下面我们进行一个实例

1.爱丽丝与鲍伯协定使用p=23以及g=5.

2.爱丽丝选择一个秘密整数a=6, 计算A = g^a mod p并发送给鲍伯。

A = 5^6 mod 23 = 8.

3.鲍伯选择一个秘密整数b=15, 计算B = g^b mod p并发送给爱丽丝。

B = 5^15 mod 23 = 19.

4.爱丽丝计算s = B a mod p

19^6 mod 23 = 2.

5.鲍伯计算s = A b mod p

8^15 mod 23 = 2.

ECDH密钥交换:

ECDH:

ECC算法和DH结合使用,用于密钥磋商,这个密钥交换算法称为ECDH。交换双方可以在不共享任何秘密的情况下协商出一个密钥。ECC是建立在基于椭圆曲线的离散对数问题上的密码体制,给定椭圆曲线上的一个点P,一个整数k,求解Q=kP很容易;给定一个点P、Q,知道Q=kP,求整数k确是一个难题。ECDH即建立在此数学难题之上。密钥磋商过程:

假设密钥交换双方为Alice、Bob,其有共享曲线参数(椭圆曲线E、阶N、基点G)。

1) Alice生成随机整数a,计算A=a*G。 #生成Alice公钥

2) Bob生成随机整数b,计算B=b*G。 #生产Bob公钥

3) Alice将A传递给Bob。A的传递可以公开,即攻击者可以获取A。

由于椭圆曲线的离散对数问题是难题,所以攻击者不可以通过A、G计算出a。

4) Bob将B传递给Alice。同理,B的传递可以公开。

5) Bob收到Alice传递的A,计算Q =b*A  #Bob通过自己的私钥和Alice的公钥得到对称密钥Q

6) Alice收到Bob传递的B,计算Q`=a*B  #Alice通过自己的私钥和Bob的公钥得到对称密钥Q‘

Alice、Bob双方即得Q=b*A=b*(a*G)=(b*a)*G=(a*b)*G=a*(b*G)=a*B=Q‘ (交换律和结合律),即双方得到一致的密钥Q。

目前Openssl里面的ECC算法的套件支持是ECDSA/ECDH。在国密的SSL套件中,可以使用ECDSA/ECC(密钥加密传输),ECDSA/ECDH(密钥磋商)两种套件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381334.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生活GOOGLE,GOOGLE生活

从上网起就知道GOOGLE的了,不过那个时候傻乎乎的就知道新浪和搜狐,随着网龄的慢慢增长对互联网也慢慢的了解的了,就发现其实生活中慢慢的离不开很多的东西,电脑天天在用,可是今天让我感触最深的是GOOGLE无处不在&#…

python爬虫源代码_零基础自学爬虫(5)B站有哪些爬虫的视频学习资源-附Python源代码...

前几天看到有人提问:。b站哪个python爬虫视频讲的较好?谢谢各位能解答一下。? 于是顺手写了一个小爬虫,把数据爬了下来。 今天有空放一下源代码。数据源,是在B站搜索框直接搜索“爬虫”,并选择按收藏排序。…

tcl手机 手写java_TCL魔法手指V2.0 (使笔记本Synaptics触摸板变身为手写板)

TCL魔法手指功能概述识别率最高:最新的识别核心,识别率达到99.3%,并配合目前最好的多字切分技术,可流畅的连笔书写,随意的倒插笔书写,完全尊重您的书写习惯。无需特殊硬件:只要您的笔…

用VBA去除Excel工作表保护密码

今天帮同事解决个EXCEL问题,现记在这,以作备忘 现象: 想要修改保护单元 格的内容,在使用“工具”菜单“保护”子菜单的“撤消工作表保护”命令,这时要求输入密码。 解决方案:网上找到一文http://www.excel1…

python连接数据库mysql错误1045_django 连接数据库出现1045错误的解决方式

根据菜鸟教程Django教程学习,运行"python manage.py migrate" 报错,出现django.db.utils.OperationalError: (1045, “Access denied for user ‘账号localhost (using password: YES)”)错误。这种错误指的是连接数据库时账号密码错误。1.只需…

MVC学习笔记1 MVC概述

MVC概述MVC三种角色– Model: 用于存储数据的组件(与领域模型概念不同)。– View: 根据Model数据进行内容展示的组件– Controller:接受并处理用户指令(操作Model),选择一个Vie…

python wxpython_python GUI wxPython

wxPython 安装 pip install wxPython (安装失败)推荐豆瓣镜像pip3 install -i https://pypi.douban.com/simple wxpythonC:\Users\dangzhengtao>pip3 install -i https://pypi.douban.com/simple wxpythonLooking in indexes: https://pypi.douban.com/simpleCollecting wxp…

java多个页面爬取_java爬取html页面(简易通用版)

项目环境ide:intellij IDEA 2017.2.5编程语言:java数据库:mysql管理工具:maven需要导包:mysql-connector-java,jsoup(解析html)等,如果要解析json可能还要导入gson的包。我把重要的依赖贴出来(默…

设计一个医院

源于个人网站:http://programmer.2008red.com/programmer/article_647_777_1.shtml 收到一封来自Exoweb的邮件,让去面试(败的很惨,呵呵。过了好长时间了,都忘记这事了,结果这公司来了邮件,说不能…

powerbi的功能介绍_Power BI:1分钟快速生成可视化报表

1.什么是Power BI ?Power BI 是微软推出的可视化工具,先来看看微软官方是怎么介绍的:使用用于自助服务和企业商业智能 (BI) 的统一、可扩展平台(该平台易于使用,可帮助获取更深入的数据见解),连…

易语言 java支持_开源Java客户端可以连接易语言服务器

我们的服务端处理客户端的连接请求是同步进行的, 每次接收到来自客户端的连接请求后,都要先跟当前的客户端通信完之后才能再处理下一个连接请求。 这在并发比较多的情况下会严重影响程序的性能,为此,我们可以把它改为如下这种异步…

Javascript--File对象

描述: 提供对文件属性的访问.属性: 属性描述Attributes设置或返回文件或文件夹的属性DateCreated返回指定文件或文件夹的创建时间DateLastAccessed返回最近访问文件或文件夹的创建时间DateLastModified返回最后修改指定文件和文件夹的日期和日期Drive返回指定文件或文件夹所在的…

idea怎么调试jsp页面_解决idea的c标签错误

Hello,World.土土来啦!最近做jq项目,遇到各种各样的问题。首先就是c标签的错误。对,没错,就是这一串因为土土上学期学的是jsp,所以是在myeclipse做的,这学期就想在idea做后端。然后复制粘贴之前的项目的时候&#xff0…

[SlickEdit] SlickEdit支持目录别名FTP控件更新

有阵没写代码了,SlickEdit升级到2009还没怎么用过,Option面板改动得更像Eclipse了,反正IDE工具也不知道到底谁抄袭谁,只是Symbol Coloring设置太唬人了吧,,默认的symbol coloring总是出现字符偏移&#xff…

有一台服务器远程失败其他电脑可以_使用闲置电视盒子打造家庭网盘和远程下载器和小型服务器(二)...

使用闲置电视盒子打造家庭网盘和远程下载器系列(二)本系列分为五章一、综述二、电视盒子的root三、app的安装和服务器环境的搭建四、网盘系统的部署和使用五、远程下载系统搭建和实现昨天写了第一章,我这是首次写东西,没想到能得到这么多朋友关注&#x…

php echo 前后有字符串,php echo 输出字符串函数详解、多行输出方法

echo "abc";//字符串echo "abc$c";//字符串变量echo abc$c;//字符串 asd$c $c不是变量echo "abc"."de";echo "abc","de";echo $a;echo $a.$b;echo $a,$b;echo $a.$b.$c;echo $a,$b,$c;echo "abc{$c}de"…

基于C#.NET的--Windows进程管理工具

基于.NET(C#)编写。 实现了进程的树状显示父子关系,其中应用到了WMI编程,以及P-invoke. 下载地址: 点击右键另存为 地址如上,需要安装.NET环境,地址:http://www.microsoft.com/downloads/details.aspx?displaylangzh-…

php编译成二进制文件_2020年小米高级 PHP 工程师面试题

1、通过哪一个函数,可以把错误转换为异常处理?A:set_error_handlerB:error_reportingC:error2exceptionD:catch正确答案:A答案分析:set_error_handler () 可指定一个回调函数&#x…

php实现视频转gif,在Linux上将视频转换成动态gif图片

本文记录一下在linux上将视频转换成动态gif图片的方法。首先,需要在Linux系统上安装FFmpeg,我会用这个工具去解压从视频中解压出视频帧。下面的指令会解压出独立的视频帧,将它们保存为GIF图片。确保使用诸如("out%04d.gif")的输出文…

用GDB Server进行远程调试

某些时候由于模拟环境的限制,调试必须要在目标板上进行。由于嵌入式系统资源比较有限,一般不能在目标板上直接构建GDB的调试环境,这时我们通常采用gdbgdbserver的远程调试方法:gdbserver在目标板中运行,而gdb则在主机上…