自己动手写区块链-公钥和私钥

在区块链中,我们需要用到公钥和私钥。在之前的自己动手写区块链-发起一笔交易(Java版)中,我们就使用了公钥和私钥。其中公钥是钱包的地址,私钥则类似钱包的密码。

最常用到的公开秘钥算法无疑是RSA。比如ssh连接的公钥和私钥,你总会看到RSA。

然而在区块链中人们都会去使用另一个算法:椭圆曲线算法。

椭圆曲线算法

大约是在历史上的某一天,有人发现数学函数里的椭圆曲线非常适合做成一个非对称加密算法。

这个函数有个特点:由输入算输出很容易,但通过输出反推输入则几乎不可能。

发现没?椭圆曲线就是一个二元方程,并且一个变量为2阶,另一个变量为3阶。

ECDSA

在区块链中,用的最多的就是ECDSA(Elliptic Curve+DSA)。ECDSA是通过椭圆加密算法对DSA(数字签名算法)的模拟。ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准。

我们在自己动手写区块链-发起一笔交易(Java版)用的也是ECDSA。

贴代码:

JDK7之后,增加了对ECDSA的实现,你看到上面的代码就是使用的KeypairGenerator来获取的的ECDSA实例,然后生成的公钥和私钥。

对了,比特币中也是使用的椭圆曲线,只不过它用的是SECP256k1。

原文发布于微信公众号 - ImportSource(importsource)

原文发表时间:2018-09-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏图形学与OpenGL

3.6.2 编程实例-河南地图绘制

#include <iostream> #include <fstream> #include<vector> #include <GL/glut.h> usi...

12510
来自专栏机器之心

资源 | 博士生开源深度学习C++库DLL:快速构建卷积受限玻尔兹曼机

选自baptiste-wicht 机器之心编译 参与:刘晓坤、蒋思源 Baptiste Wicht公布了自己编写的深度学习库DLL1.0,可以通过C++接口使用...

62560
来自专栏一棹烟波

OpenGL进行简单的通用计算实例

博主作为OpenGL新手,最近要用OpenGL进行并行的数据计算,突然发现这样的资料还是很少的,大部分资料和参考书都是讲用OpenGL进行渲染的。好不容易找到一...

29870
来自专栏Python数据科学

快速入门Matplotlib教程

Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。这里将会探索 matpl...

12310
来自专栏和蔼的张星的图像处理专栏

8.SSD目标检测之二:制作自己的训练集

最近秋色甚好,一场大风刮散了雾霾,难得几天的好天气,周末回家在大巴上看着高速两旁夕阳照射下黄澄澄的树叶,晕车好像也好了很多。 特地周六赶回来为了周末去拍点素材...

16540
来自专栏xdecode

Java调用PDFBox打印自定义纸张PDF

打印对象 一份设置为A3纸张, 页面边距为(10, 10, 10, 10)mm的PDF文件. ? PageFormat  默认PDFPrintable无法设置页...

59050
来自专栏编程微刊

【前端图表】echarts实现散点图x轴时间轴

56830
来自专栏IT派

开源|人脸检测的C / C ++源代

人脸检测的C/C++源代码,曾发表于 OPENCV 的 MAILING LIST,主要是对OPENCV 3.1 版本发布的代码做了一些速度上的优化,并且解决了内...

42350
来自专栏小樱的经验随笔

HDU 1874 畅通工程续【Floyd算法实现】

畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav...

288100
来自专栏智能计算时代

IBM Watson提供的认知计算服务介绍

Cognitive Service Introduction Twitter:@huiwenhan Weibo:@huiwenhan Agenda Wats...

36080

扫码关注云+社区

领取腾讯云代金券