文档章节

python 使用curve25519

Xjs_ts
 Xjs_ts
发布于 2017/08/31 21:46
字数 433
阅读 70
收藏 0
点赞 0
评论 0

解释:

密码学中Curve25519是一个椭圆曲线,提供128位的安全性,并设计用于椭圆曲线Diffie-Hellman(ECDH)密钥协商方案。它是最快的ECC曲线之一,并没有被任何已知的专利所涵盖。[1]所述的参考实现公共领域软件[2]

原来的Curve25519论文将其定义为Diffie-Hellman(DH)功能。丹尼尔·伯恩斯坦(Daniel J. Bernstein)曾经提出使用Curve25519的名称作为基础曲线,而名称为X25519为DH功能。

数学性质

所使用的曲线是由素数2 255 - 19定义的素数场的二次扩展上的y 2 = x 3 + 486662 x 2 + x,蒙哥马利曲线,并且使用基点x = 9。协议使用压缩椭圆点(只有X坐标),因此它允许仅使用XZ坐标有效地使用Montgomery梯子进行ECDH[4]

Curve25519的构建使得它避免了许多潜在的实施陷阱。[5]通过设计,它免受定时攻击,它接受任何32字节的字符串作为有效的公钥,不需要验证。

曲线与Ed25519签名方案中使用的扭曲爱德华兹曲线是双重等价的[6]

首先安装

pip install donna25519

 

 

代码:

In [116]:

import random
# help(random.randrange)
import binascii
import donna25519 as curve25519

In [121]:

bobs_private=curve25519.PrivateKey()
bobs_public=bobs_private.get_public()
print("BOb's Private Key:",binascii.hexlify(bobs_private.private))
print("BOb's Public Key:",binascii.hexlify(bobs_public.public))
BOb's Private Key: b'180b6a7274b2797688d7d7d6e982ad13c49923ba6d52f8ecd93a9a1b2ba60a76'
BOb's Public Key: b'f43ae3b47138a406ac72ce599cb5f25e1714922a966861d97775843956dfcd26'

In [122]:

Alis_private=curve25519.PrivateKey()
Alis_public=Alis_private.get_public()
print("Alis's Private Key:",binascii.hexlify(Alis_private.private))
print("Alis's Public Key:",binascii.hexlify(Alis_public.public))
Alis's Private Key: b'f8f699f118a912df27cefad42b247fceb4b11e0b5f77471ebfd67308cf1b5e64'
Alis's Public Key: b'cff4d3898bcd945b45391ff79d139064777f3117f732eb26b22a2cc73261ab0f'

In [123]:

# Alis pub --> bob
bobs_sharekey=bobs_private.do_exchange(Alis_public)
# Bobs pub -->Alis
alis_sharekey=Alis_private.do_exchange(bobs_public)

print("Bob's Share Key:",binascii.hexlify(bobs_sharekey))
print("Alis's Share Key:",binascii.hexlify(alis_sharekey))
Bob's Share Key: b'0457f7dcdbaeb6bc2aa843a431a2117ad0b38568d1c1e3c1adac88da7008ca48'
Alis's Share Key: b'0457f7dcdbaeb6bc2aa843a431a2117ad0b38568d1c1e3c1adac88da7008ca48'

In [124]:

if bobs_sharekey == alis_sharekey:
    print("ShareKey SAME 100%")
else:
    print("ShareKey Diff")
ShareKey SAME 100%

© 著作权归作者所有

共有 人打赏支持
Xjs_ts
粉丝 1
博文 12
码字总数 3160
作品 0
海淀
高级程序员
linux-Centos7安装python3并与python2共存

1.查看是否已经安装Python CentOS 7.2 默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5。 使用 python -V 命令查看一下是否安装Python 然后使用命令 which python 查...

lemonwater ⋅ 04/17 ⋅ 0

Centos7安装Python3

1.查看是否已经安装Python CentOS 7.2 默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5。 使用 python -V 命令查看一下是否安装Python 然后使用命令 which python 查...

xinrenbaodao ⋅ 04/19 ⋅ 0

ubuntu下Python的安装和使用

4.1 Python的安装 ubuntu下可以很方便的使用apt-get来安装软件,这里我们安装 Python 2.7/3.2(因为Python2和Python3区别很大)。安装步骤如下(下面的命令安装了两种)。 4.1.1 安装Python发...

JungleKing ⋅ 05/16 ⋅ 0

Centos7下安装python3并安装虚拟环境

引言 服务器自带的python版本大多是2.X,而且有些系统应用依赖于默认的python环境。但有时候要用到python3,为了不与系统的python环境相冲突,就新安装python3版本并使用虚拟环境。 安装准备...

_缘君_ ⋅ 05/02 ⋅ 0

你真的了解Python吗?这篇文章让你了解90%

  【IT168 评论】人们为什么使用Python?   之所以选择Python的主要因素有以下几个方面:   软件质量:在很大程度上,Python更注重可读性、一致性和软件质量,从而与脚本语言世界中的其...

博客园 ⋅ 05/21 ⋅ 0

python2.x和python3.x的区别

Python的3.0版本,常被称为Python3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。 为了不带入过多的累赘,Python3.0在设计的时候没有考虑向下相容。许多针对早期Python版本...

leejia1989 ⋅ 05/30 ⋅ 0

《Python从小白到大牛》第3章 第一个Python程序

本章以HelloWorld作为切入点,介绍如何编写和运行Python程序代码。 运行Python程序主要有两种方式: 1.交互式方式运行 2.文件方式运行 本章介绍这两种运行方式实现HelloWorld程序。 使用P...

tony关东升 ⋅ 06/20 ⋅ 0

C/C++ 和 Python混合编程

链接:https://www.zhihu.com/question/23003213/answer/56121859 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 #include int main(int argc, char *...

sirius_0 ⋅ 04/21 ⋅ 0

用MaxCompute Studio开发Python UDF(附采坑记录)

1.环境 系统:MacOS 系统自带Python版本(/usr/bin/python):2.7.10 Anaconda Python版本:2.7.14 Maxcompute Studio版本: 2.9.1 2.安装Python|Pyodps|Python插件 MaxCompute studio能支持用......

watercat ⋅ 05/24 ⋅ 0

GyoiThon 新一代渗透工具采坑集

最好使用python3的环境 本次使用python2.7环境 1.关于kalipython切换 打开终端分别输入下面两条命令: update-alternatives --install /usr/bin/python python /usr/bin/python2 100 update...

harry1080 ⋅ 04/15 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

tcp/ip详解-链路层

简介 设计链路层的目的: 为IP模块发送和接收IP数据报 为ARP模块发送ARP请求和接收ARP应答 为RARP模块发送RARP请求和接收RARP应答 TCP/IP支持多种链路层协议,如以太网、令牌环往、FDDI、RS-...

loda0128 ⋅ 43分钟前 ⋅ 0

spring.net aop代码例子

https://www.cnblogs.com/haogj/archive/2011/10/12/2207916.html

whoisliang ⋅ 59分钟前 ⋅ 0

发送短信如何限制1小时内最多发送11条短信

发送短信如何限制1小时内最多发送11条短信 场景: 发送短信属于付费业务,有时为了防止短信攻击,需要限制发送短信的频率,例如在1个小时之内最多发送11条短信. 如何实现呢? 思路有两个 截至到当...

黄威 ⋅ 昨天 ⋅ 0

mysql5.7系列修改root默认密码

操作系统为centos7 64 1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2、重启 mysqld 服务:systemctl restart mysql...

sskill ⋅ 昨天 ⋅ 0

Intellij IDEA神器常用技巧六-Debug详解

在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的...

Mkeeper ⋅ 昨天 ⋅ 0

zip压缩工具、tar打包、打包并压缩

zip 支持压缩目录 1.在/tmp/目录下创建目录(study_zip)及文件 root@yolks1 study_zip]# !treetree 11└── 2 └── 3 └── test_zip.txt2 directories, 1 file 2.yum...

蛋黄Yolks ⋅ 昨天 ⋅ 0

聊聊HystrixThreadPool

序 本文主要研究一下HystrixThreadPool HystrixThreadPool hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/HystrixThreadPool.java /** * ThreadPool used to executed {@link Hys......

go4it ⋅ 昨天 ⋅ 0

容器之上传镜像到Docker hub

Docker hub在国内可以访问,首先要创建一个账号,这个后面会用到,我是用126邮箱注册的。 1. docker login List-1 Username不能使用你注册的邮箱,要用使用注册时用的username;要输入密码 ...

汉斯-冯-拉特 ⋅ 昨天 ⋅ 0

SpringBoot简单使用ehcache

1,SpringBoot版本 2.0.3.RELEASE ①,pom.xml <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELE......

暗中观察 ⋅ 昨天 ⋅ 0

Spring源码解析(八)——实例创建(下)

前言 来到实例创建的最后一节,前面已经将一个实例通过不同方式(工厂方法、构造器注入、默认构造器)给创建出来了,下面我们要对创建出来的实例进行一些“加工”处理。 源码解读 回顾下之前...

MarvelCode ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部