JRE8 + jce_policy-8, Bouncy Castle 1.50环境下调试通过

import java.security.KeyPair;

import java.security.KeyPairGenerator;

import java.security.Security;

import javax.crypto.Cipher;

import javax.xml.bind.annotation.adapters.HexBinaryAdapter;

import org.bouncycastle.jce.interfaces.ECPrivateKey;

import org.bouncycastle.jce.interfaces.ECPublicKey;

import org.bouncycastle.jce.provider.BouncyCastleProvider;

import org.bouncycastle.math.ec.ECCurve;

import org.bouncycastle.math.ec.ECPoint;

public class TestECC {

public static void main(String[] args) throws

Exception {

byte[] plainText = "Hello

World!".getBytes();

byte[] cipherText = null;

Security.addProvider(new

BouncyCastleProvider());

//生成公钥和私钥

KeyPairGenerator

keyPairGenerator = KeyPairGenerator.getInstance("ECIES",

"BC");

KeyPair keyPair =

keyPairGenerator.generateKeyPair(); ECPublicKey ecPublicKey =

(ECPublicKey) keyPair.getPublic();

ECPrivateKey ecPrivateKey =

(ECPrivateKey) keyPair.getPrivate();

//打印密钥信息

ECCurve ecCurve =

ecPublicKey.getParameters().getCurve();

System.out.println("椭圆曲线参数a = "

+ ecCurve.getA().toBigInteger());

System.out.println("椭圆曲线参数b = "

+ ecCurve.getB().toBigInteger());

System.out.println("椭圆曲线参数q = "

+ ((ECCurve.Fp) ecCurve).getQ());

ECPoint basePoint =

ecPublicKey.getParameters().getG();

System.out.println("基点橫坐标 "

+

basePoint.getAffineXCoord().toBigInteger());

System.out.println("基点纵坐标 "

+

basePoint.getAffineYCoord().toBigInteger());

System.out.println("公钥横坐标 "

+

ecPublicKey.getQ().getAffineXCoord().toBigInteger());

System.out.println("公钥纵坐标 "

+

ecPublicKey.getQ().getAffineYCoord().toBigInteger());

System.out.println("私钥 " + ecPrivateKey.getD());

Cipher cipher =

Cipher.getInstance("ECIESwithDESede/NONE/PKCS7Padding",

"BC");

// 加密

cipher.init(Cipher.ENCRYPT_MODE,

ecPublicKey);

cipherText =

cipher.doFinal(plainText);

System.out.println("密文: " + new

HexBinaryAdapter().marshal(cipherText));

// 解密

cipher.init(Cipher.DECRYPT_MODE,

ecPrivateKey);

plainText =

cipher.doFinal(cipherText);

// 打印解密后的明文

System.out.println("解密后的明文: " +

new String(plainText));

}

}

ecies算法c语言实现,Bouncy Castle算法库中ECIES算法调用示例相关推荐

  1. 大文件MD5计算 C语言 (从OpenSSL库中分离算法:三)

    从OpenSSL库中分离算法-MD5算法-大文件MD5计算 续上述博客 小文件计算MD5时,可以把文件数据一次性都读到内存中计算,但当文件很大时,将文件一次性读到内存中是不可行的,此时,需要对文件数据 ...

  2. 基于TIA博途的一阶滞后滤波+中位值滤波+堆栈平均值滤波算法SCL语言程序(封装FB库)

    基于TIA博途的一阶滞后滤波+中位值滤波+堆栈平均值滤波算法SCL语言程序(封装FB库) 如下图所示,新建一个新项目,添加一个1215CPU,在程序块中添加一个FB,命名为:一阶滞后滤波法, 在该FB ...

  3. Bouncy Castle 加密库修复高危的认证绕过漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 最近,Bouncy Castle 加密库修复了一个高危的认证绕过漏洞. 该项目建立于2000年,表示 Java 和 C# 加密中使用的 ...

  4. PPQ库中KLD算法实现代码解析

    PPQ量化工具库KLD算法解析 前言 PPQ算法实现 NVIDIA的PPT中KLD算法流程 KLD算法PPQ实现版本 PPQ与NVIDIA的区别: 前言 这是对PPQ库中KLD算法实现代码解析,关于P ...

  5. 实现顺序栈的各种基本运算的算法C语言,实现顺序栈的各种基本运算的算法

    试编写一个算法,让两个顺序栈共用一个数组stack[N]试编写一个算法,让两个顺序栈共用一个数组stack[N],分别实现入栈\出栈操要2个栈公用一个存储空间看来栈顶指针只能从两端开始了(和队列有点像 ...

  6. 经典c语言程序设计算法,C语言程序设计和循环结构相关的经典算法之一.ppt

    C语言程序设计和循环结构相关的经典算法之一 第七讲 循环结构的经典算法之一 程序设计举例 ;教 学目 的 :1.灵活运用循环语句 2.编写一些基本算法程序 教学重点和难点:重点:判断素数,求最大公约数 ...

  7. java 线性回归算法_线性搜索或顺序搜索算法在Java中如何工作? 示例教程

    java 线性回归算法 大家好,之前,我讨论了二进制搜索算法的工作原理,并分享了在Java中实现二进制搜索的代码. 在那篇文章中,有人问我是否还有其他搜索算法? 如果数组中的元素未排序,又该如何使用它 ...

  8. 算法 c语言_C语言中10个经典的算法,学会它,利用它

    C语言中有有许多经典的算法,这些算法都是许多人的智慧结晶,也是编程中常用的算法,这里面包含了众多算法思想,掌握这些算法,对于学习更高级的.更难的算法都会有很大的帮助,会为自己的算法学习打下坚实的基础. ...

  9. c语言贪心算法合并箭,LeetCode刷题题库:贪心算法

    LeetCode刷题笔记:贪心算法 自大学开始,我便陆陆续续的学习一些 算法和数据结构 方面的内容,同时也开始在一些平台刷题,也会参加一些大大小小的算法竞赛.但是平时刷题缺少目的性.系统性,最终导致算 ...

最新文章

  1. Linux中的进程之初步了解
  2. shell字符串截取总结
  3. client-go workqueue demo
  4. WebRtc音视频实时通信--基本术语
  5. nginx php oracle,第8天 ORACLE安装及NGINX整合PHP环境
  6. 解封装(二):初始化解封装avformat_open_input,各参数分析,以及简单流程
  7. commons-logging slf4j log4j 区别
  8. 2017.3.20-morning
  9. i.MX283A移植mt7601--小米随身wifi
  10. 山海演武传·黄道·第一卷 雏龙惊蛰 第十三章 穷奇长梦(上) 十四 穷奇长梦(下)...
  11. 职称计算机 将计算机broad_1下的e盘映射为k盘网络驱动器,计算机职称考试题目(网络基础答案)...
  12. css修改图标字体大小,css-更改AngularJS材质图标的图标大小
  13. Mac不能复制拷贝写入文件到移动硬盘,U盘怎么办
  14. 获取Map的key值的几种方式
  15. Excel的DATEDIF函数及其用法实例——求日期之间的间隔
  16. 线性代数中解方程组的加减消元和求特征向量的加减消元的区别
  17. 期货十三篇 第一篇 警示篇
  18. 树上的动态规划--树的最大独立集--刷表法
  19. 【编程初学者】创建自己的开源项目1-创建远程代码仓库
  20. Redis数据类型有哪些?

热门文章

  1. 使用FCN做图像语义分割(实践篇)
  2. 错误fatal error: curl/curl.h: No such file or directory解决方案
  3. 请编写一个 C 函数,该函数给出一个字节中8二进制数中为1的个数
  4. Netty3之ServerBootstrap分析
  5. springCloud Finchley 实战入门(基于springBoot 2.0.3)【六 Hystrix 仪表盘】
  6. linux 用户/用户组添加修改删除(ubuntu/centos)
  7. All Things OpenTSDB
  8. python django django-debug-toolbar 加载缓慢,不能使用。
  9. 【C语言】练习5-8
  10. Android的多任务之路