当前位置: 首页 > news >正文

java调用ecdh_Jecc(java椭圆曲线加密库)学习笔记及ECDH实现

C++椭圆曲线库下载网址http://sourceforge.net/projects/libecc/files/,打开之后右边显示:

c0a7552e5106c0f7ce77a479f3e9c62c.png

点击红框里面链接:http://sourceforge.net/projects/jecc/?source=recommended,跳转到jecc下载页

0cf554a37b76c53d24c5f57435eeb356.png

点击下载即可。下载之后文件名是jecc-alpha1.1.tar.gz,直接用winrar解压即可,文件已存至网盘,链接: http://pan.baidu.com/s/1sjpEcqT 密码: e3yd。

接下来可以在myeclipse里面跑ecc程序了,首先新建程序:

b8dd360c81710d8eab232e901576679a.png

注意红框里面选择:Use project folder as root for sources and class files,不然运行时报错,接下来在project里面建立一个名为ecc的package,

用import将解压后的ecc目录下面的文件全部导入进来:

41d98972dfee62b0e8e18d2713c5849e.png

最后我选择了运行elliptic下面的run.java

7cdbfaf74faec9aa1693afc3b8d5d1bd.png

运行结果

3ab48e4c27375abb4fb3e0c84777f9d9.png

下面是一段我利用JECC写的用来实习ECDH代码,ECDH是基于ECC(EllipticCurveCryptosystems,椭圆曲线密码体制,参看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生成随机整数a

System.out.println("Alice:" + a);

Random r2 = new Random(20);

BigInteger b = new BigInteger(50, r2);// Bob生成随机整数b

System.out.println("Bob:" + b);

EllipticCurve e = new EllipticCurve(new BigInteger("1"),

new BigInteger("6"), new BigInteger("11"));

System.out.println("EllipticCurve: " + e + " created succesfully!");

// 生成基点G

ECPoint G = new ECPoint(e, new BigInteger("2"), new BigInteger("7"));

ECPoint A, B;

A = G.multiply(a);// 计算A=a*G

System.out.println("A=a*G: "+a + " * " + G + " = " + A);

B = G.multiply(b);// 计算B=b*G

System.out.println("B=b*G: "+b + " * " + G + " = " + B);

ECPoint Q1, Q2;

Q1 = A.multiply(b);// Bob收到Alice传递的A,计算Q =b*A

Q2 = B.multiply(a);// Alice收到Bob传递的B,计算Q`=a*B

System.out.println("Q1:"+Q1);

System.out.println("Q2:"+Q2);

System.out.print(Q1.equals(Q2));

}

}运行结果:

7bab11741d944c529b54dbb63a8bd325.png

相关文章:

  • java雷达_Java编写有关雷达问题,哪位高手帮个忙,谢谢~~~
  • 继承java_Java— 继承
  • java guid_细说Java生成GUID的实现方法
  • java多租户_(九十二)java版spring cloud 多租户社交电子商务-gateway(实现限流)...
  • foxpro mysql_Foxpro数据库命令汇总
  • java generatedvalue_java – 在JPA @GeneratedValue列中手动指定主键的值
  • java io byte_JavaIO之字节流学习笔记
  • 八大排序方法java_八大排序java
  • java一个类怎么调用另一个类的变量_如何在一个类里调用到另一个类的变量的值...
  • java return后执行_java 问题 如果前一个return执行了 那么后面的一系列System.out.println 还会执行吗...
  • java持久层_java访问持久层技术的进化
  • java set encoding file_系统变量file.encoding对Java的运行影响有多大?(转)good
  • java运行一段时间变慢_tomcat 运行程序很慢 运行一段时间就报错: java.lang.OutOfMemoryError: PermGen space...
  • java的开发人员数量_Java开发人员最容易出现的几类错误
  • 字符串加减转数字java_剑指Offer解题报告(Java版)——字符串转换为数字 49
  • 2017届校招提前批面试回顾
  • 77. Combinations
  • Angular4 模板式表单用法以及验证
  • CentOS从零开始部署Nodejs项目
  • es6--symbol
  • iOS编译提示和导航提示
  • JavaScript DOM 10 - 滚动
  • Js基础——数据类型之Null和Undefined
  • k8s 面向应用开发者的基础命令
  • leetcode98. Validate Binary Search Tree
  • PHP那些事儿
  • SpriteKit 技巧之添加背景图片
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 近期前端发展计划
  • 经典排序算法及其 Java 实现
  • 双管齐下,VMware的容器新战略
  • 通过npm或yarn自动生成vue组件
  • 微信小程序实战练习(仿五洲到家微信版)
  • 我与Jetbrains的这些年
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • No resource identifier found for attribute,RxJava之zip操作符
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ###STL(标准模板库)
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (10)ATF MMU转换表
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (二十三)Flask之高频面试点
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)Sql Server 保留几位小数的两种做法
  • (转载)Linux网络编程入门
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .gitignore