ecies算法c语言实现,Bouncy Castle算法库中ECIES算法调用示例
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算法调用示例相关推荐
- 大文件MD5计算 C语言 (从OpenSSL库中分离算法:三)
从OpenSSL库中分离算法-MD5算法-大文件MD5计算 续上述博客 小文件计算MD5时,可以把文件数据一次性都读到内存中计算,但当文件很大时,将文件一次性读到内存中是不可行的,此时,需要对文件数据 ...
- 基于TIA博途的一阶滞后滤波+中位值滤波+堆栈平均值滤波算法SCL语言程序(封装FB库)
基于TIA博途的一阶滞后滤波+中位值滤波+堆栈平均值滤波算法SCL语言程序(封装FB库) 如下图所示,新建一个新项目,添加一个1215CPU,在程序块中添加一个FB,命名为:一阶滞后滤波法, 在该FB ...
- Bouncy Castle 加密库修复高危的认证绕过漏洞
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 最近,Bouncy Castle 加密库修复了一个高危的认证绕过漏洞. 该项目建立于2000年,表示 Java 和 C# 加密中使用的 ...
- PPQ库中KLD算法实现代码解析
PPQ量化工具库KLD算法解析 前言 PPQ算法实现 NVIDIA的PPT中KLD算法流程 KLD算法PPQ实现版本 PPQ与NVIDIA的区别: 前言 这是对PPQ库中KLD算法实现代码解析,关于P ...
- 实现顺序栈的各种基本运算的算法C语言,实现顺序栈的各种基本运算的算法
试编写一个算法,让两个顺序栈共用一个数组stack[N]试编写一个算法,让两个顺序栈共用一个数组stack[N],分别实现入栈\出栈操要2个栈公用一个存储空间看来栈顶指针只能从两端开始了(和队列有点像 ...
- 经典c语言程序设计算法,C语言程序设计和循环结构相关的经典算法之一.ppt
C语言程序设计和循环结构相关的经典算法之一 第七讲 循环结构的经典算法之一 程序设计举例 ;教 学目 的 :1.灵活运用循环语句 2.编写一些基本算法程序 教学重点和难点:重点:判断素数,求最大公约数 ...
- java 线性回归算法_线性搜索或顺序搜索算法在Java中如何工作? 示例教程
java 线性回归算法 大家好,之前,我讨论了二进制搜索算法的工作原理,并分享了在Java中实现二进制搜索的代码. 在那篇文章中,有人问我是否还有其他搜索算法? 如果数组中的元素未排序,又该如何使用它 ...
- 算法 c语言_C语言中10个经典的算法,学会它,利用它
C语言中有有许多经典的算法,这些算法都是许多人的智慧结晶,也是编程中常用的算法,这里面包含了众多算法思想,掌握这些算法,对于学习更高级的.更难的算法都会有很大的帮助,会为自己的算法学习打下坚实的基础. ...
- c语言贪心算法合并箭,LeetCode刷题题库:贪心算法
LeetCode刷题笔记:贪心算法 自大学开始,我便陆陆续续的学习一些 算法和数据结构 方面的内容,同时也开始在一些平台刷题,也会参加一些大大小小的算法竞赛.但是平时刷题缺少目的性.系统性,最终导致算 ...
最新文章
- Linux中的进程之初步了解
- shell字符串截取总结
- client-go workqueue demo
- WebRtc音视频实时通信--基本术语
- nginx php oracle,第8天 ORACLE安装及NGINX整合PHP环境
- 解封装(二):初始化解封装avformat_open_input,各参数分析,以及简单流程
- commons-logging slf4j log4j 区别
- 2017.3.20-morning
- i.MX283A移植mt7601--小米随身wifi
- 山海演武传·黄道·第一卷 雏龙惊蛰 第十三章 穷奇长梦(上) 十四 穷奇长梦(下)...
- 职称计算机 将计算机broad_1下的e盘映射为k盘网络驱动器,计算机职称考试题目(网络基础答案)...
- css修改图标字体大小,css-更改AngularJS材质图标的图标大小
- Mac不能复制拷贝写入文件到移动硬盘,U盘怎么办
- 获取Map的key值的几种方式
- Excel的DATEDIF函数及其用法实例——求日期之间的间隔
- 线性代数中解方程组的加减消元和求特征向量的加减消元的区别
- 期货十三篇 第一篇 警示篇
- 树上的动态规划--树的最大独立集--刷表法
- 【编程初学者】创建自己的开源项目1-创建远程代码仓库
- Redis数据类型有哪些?
热门文章
- 使用FCN做图像语义分割(实践篇)
- 错误fatal error: curl/curl.h: No such file or directory解决方案
- 请编写一个 C 函数,该函数给出一个字节中8二进制数中为1的个数
- Netty3之ServerBootstrap分析
- springCloud Finchley 实战入门(基于springBoot 2.0.3)【六 Hystrix 仪表盘】
- linux 用户/用户组添加修改删除(ubuntu/centos)
- All Things OpenTSDB
- python django django-debug-toolbar 加载缓慢,不能使用。
- 【C语言】练习5-8
- Android的多任务之路