Jecc(java椭圆曲线加密库)学习笔记及ECDH实现
来源:互联网 发布:python论坛源码 编辑:程序博客网 时间:2024/06/05 03:38
C++椭圆曲线库下载网址http://sourceforge.net/projects/libecc/files/,打开之后右边显示:
点击红框里面链接:http://sourceforge.net/projects/jecc/?source=recommended,跳转到jecc下载页
点击下载即可。下载之后文件名是jecc-alpha1.1.tar.gz,直接用winrar解压即可,文件已存至网盘,链接: http://pan.baidu.com/s/1sjpEcqT 密码: e3yd。
接下来可以在myeclipse里面跑ecc程序了,首先新建程序:
注意红框里面选择:Use project folder as root for sources and class files,不然运行时报错,接下来在project里面建立一个名为ecc的package,
用import将解压后的ecc目录下面的文件全部导入进来:
最后我选择了运行elliptic下面的run.java
运行结果
下面是一段我利用JECC写的用来实习ECDH代码,ECDH是基于ECC(Elliptic Curve Cryptosystems,椭圆曲线密码体制,参看ECC)的DH( Diffie-Hellman)密钥交换算法。ECDH的参考网址:http://www.tuicool.com/articles/em6zEb。此代码没有随机生成一条椭圆曲线,而是自己规定了一条,这点有待改进。
package ecc.elliptic;import java.math.BigInteger;import java.io.*;import java.util.*;import java.util.zip.*;public class Ecdh {public static void main(String[] args) throws InsecureCurveException,NotOnMotherException {Random r1 = new Random(100);BigInteger a = new BigInteger(60, r1);// Alice生成随机整数aSystem.out.println("Alice:" + a);Random r2 = new Random(20);BigInteger b = new BigInteger(50, r2);// Bob生成随机整数bSystem.out.println("Bob:" + b);EllipticCurve e = new EllipticCurve(new BigInteger("1"),new BigInteger("6"), new BigInteger("11"));System.out.println("EllipticCurve: " + e + " created succesfully!");// 生成基点GECPoint G = new ECPoint(e, new BigInteger("2"), new BigInteger("7"));ECPoint A, B;A = G.multiply(a);// 计算A=a*GSystem.out.println("A=a*G: "+a + " * " + G + " = " + A);B = G.multiply(b);// 计算B=b*GSystem.out.println("B=b*G: "+b + " * " + G + " = " + B);ECPoint Q1, Q2;Q1 = A.multiply(b);// Bob收到Alice传递的A,计算Q =b*AQ2 = B.multiply(a);// Alice收到Bob传递的B,计算Q`=a*BSystem.out.println("Q1:"+Q1);System.out.println("Q2:"+Q2);System.out.print(Q1.equals(Q2));}}运行结果:
1 0
- Jecc(java椭圆曲线加密库)学习笔记及ECDH实现
- java加密解密ECDH笔记
- java加密解密ECDH笔记
- 椭圆曲线加密学习的菜鸟入门
- 椭圆曲线加密法
- 椭圆曲线加密ECC
- Raphael学习笔记(5)--绘图(路径【椭圆曲线】)
- ECDH and ECDSA(ECC椭圆曲线算法3)
- ATECC508A芯片开发笔记(八):ECDH算法配置方法、执行过程及实现原理
- 椭圆曲线ECC加密实例
- 使用椭圆曲线进行加密解密
- 离散对数和椭圆曲线加密原理
- 使用椭圆曲线进行加密解密
- 大数运算及椭圆曲线算法库及其演示
- 椭圆曲线
- 椭圆曲线
- 椭圆曲线
- c++ 简单的实现椭圆曲线加密算法
- 最快的Json框架-Jfire-codejson解析
- 软件开发资源
- hdu 1203 I NEED A OFFER! (01背包)
- return 开发时新的
- ios block学习
- Jecc(java椭圆曲线加密库)学习笔记及ECDH实现
- TextView字体样式Spannable
- git仓库的基本操作
- Jquery解析Json
- 解决google被墙没法更新androidSDK的问题
- 移动端 页面布局时需要注意的几项常见要点
- Tushare学习笔记
- 利用多核优势,遍历NSDictionary
- mysql日期相减操作