openjdk 使用_如何在OpenJDK中使用ECC

openjdk 使用

曾经试图在Java和OpenJDK中使用椭圆曲线密码术 (ECC)的每个人要么被迫使用Bouncy Castle,要么被SunEC提供者弄糊涂了 。 SunEC提供程序根据文档 (报价)提供以下算法:

AlgorithmParameters 欧共体
KeyAgreement ECDH
KeyFactory 欧共体
KeyPairGenerator 欧共体
Signature ECDSA没有
SHA1withECDSA
SHA256withECDSA SHA3​​84withECDSA SHA512withECDSA

不幸的是,OpenJDK没有附带该提供程序。 但是,任何真正想尝试Java内置ECC功能的人都可能会尝试将sunec.jar(包含提供程序)简单地添加到jre / lib / ext /文件夹中。 但是,当尝试使用提供程序时,这些家伙一定会惊讶地擦着眼睛。 事情与刚开始时看起来不一样...

假设我们将库添加到正确的文件夹中,我们的OpenJDK注意到了它,并且我们可以成功地编译以下代码而没有任何例外:

package eccprovidertest;import java.security.Provider;
import java.security.Provider.Service;
import java.security.Security;
import sun.security.ec.SunEC;/*** ECC Provider Test.* @author  Christopher Meyer - christopher.meyer@rub.de* @version 0.1* Oct 23, 2013*/
public class ECCProviderTest {/*** @param args the command line arguments*/public static void main(final String[] args) {Provider sunEC = new SunEC();Security.addProvider(sunEC);for(Service service : sunEC.getServices()) {System.out.println(service.getType() + ": " + service.getAlgorithm());}}}

如果最终使用OpenJDK(Java版本“ 1.7.0_25”)运行它,则会得到以下输出:

KeyFactory: EC
AlgorithmParameters: EC

哇! 这不是一个非常有用的提供程序.....承诺的算法在哪里? 让我们尝试使用Oracle JDK来运行代码,只是为了好玩:

KeyFactory: EC
AlgorithmParameters: EC
Signature: NONEwithECDSA
Signature: SHA1withECDSA
Signature: SHA256withECDSA
Signature: SHA384withECDSA
Signature: SHA512withECDSA
KeyPairGenerator: EC
KeyAgreement: ECDH

惊喜,惊喜! 那是您开始揉眼睛的时刻! 这里是算法,但是为什么仅在使用Oracle JDK时才可用?

这样做的原因隐藏在提供程序的代码中。 以下几行摘自sun.security.ec.SunEC :

private static final long serialVersionUID = -2279741672933606418L;// flag indicating whether the full EC implementation is present
// (when native library is absent then fewer EC algorithms are available)
private static boolean useFullImplementation = true;
static {try {AccessController.doPrivileged(new PrivilegedAction() {public Void run() {System.loadLibrary("sunec"); // check for native libraryreturn null;}});} catch (UnsatisfiedLinkError e) {useFullImplementation = false;}
}public SunEC() {super("SunEC", 1.7d, "Sun Elliptic Curve provider (EC, ECDSA, ECDH)");// if there is no security manager installed, put directly into// the provider. Otherwise, create a temporary map and use a// doPrivileged() call at the end to transfer the contentsif (System.getSecurityManager() == null) {SunECEntries.putEntries(this, useFullImplementation);} else {Map<Object, Object> map = new HashMap<Object, Object>();SunECEntries.putEntries(map, useFullImplementation);AccessController.doPrivileged(new PutAllAction(this, map));}
}

此外,在将某些条目添加到列表之后,可以在SunECEntries类中找到以下内容:

/** Register the algorithms below only when the full ECC implementation* is available*/
if (!useFullImplementation) {return;
}

好的,这说明了行为。 仅当可以成功加载本机库(在Windows计算机上为libsunec.so或sunec.dll)时,才存在算法。 在我们的情况下,显然缺少该库(因为我们仅复制了sunec.jar文件)。

不幸的是,如果我们阅读了提供者的文档,我们将会知道:

“ […] Java类打包到JRE扩展目录中已签名的sunec.jar中,而C ++和C函数打包到JRE本机库目录中的libsunec.so或sunec.dll中。 如果不存在本机库,则该提供者已注册为支持较少的ECC算法(省略了KeyPairGenerator,Signature和KeyAgreement)。”

不幸的是,这是我们自己急于采取的行动,这浪费了我们宝贵的开发时间。 摘自:有时候阅读JavaDocs确实很有帮助……。 (但不像调试工作那样富有教育意义)。

参考: Java安全和相关主题博客中的JCG合作伙伴 Christopher Meyer的如何将ECC与OpenJDK结合使用 。

翻译自: https://www.javacodegeeks.com/2013/10/how-to-use-ecc-with-openjdk.html

openjdk 使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bpcs uploader.php,linux 备份定时同步到百度云盘

导读&#xff1a;现在的百度云盘免费容量都是2T了&#xff0c;即便把电脑上全部的东东都放上去&#xff0c;也还有大把的剩余空间。对于站长来讲&#xff0c;是彻底能够充分利用这些硬盘空间的&#xff0c;如今咱们就用百度云盘来备份Linux服务器上的数据。php一直在想&#xf…

hadoop可以解决什么问题_快速解决皮带机轴磨损问题可以这样做

皮带机是皮带输送机的简称&#xff0c;皮带机运用输送带的连续或间歇运动来输送各种轻重不同的物品&#xff0c;既可输送各种散料&#xff0c;也可输送各种纸箱、包装袋等单件重量不大的件货&#xff0c;用途广泛。皮带机运行时轴磨损是一个很常见的设备问题&#xff0c;某企业…

matlab 从 excel读取 日期_毕业季:计量经济学实证研究中,哪款软件好(SPSS,Eviews,Matlab,stata,SAS)...

毕业季&#xff1a;计量经济学实证研究中&#xff0c;哪款软件好&#xff1f;&#xff08;SPSS&#xff0c;Eviews&#xff0c;Matlab&#xff0c;stata&#xff0c;SAS&#xff09;对于这个问题&#xff0c;我也深深的迷茫过。用了包括但不限于Excel、SPSS、SPSS modeler、Evi…

php 猴子选大王,php猴子选大王

法一&#xff1a;function monkeyKing($n,$m){$arrrange(1,$n);$i0;while (count($arr)>1){for($i1;$i<$m-1;$i){array_push($arr, array_shift($arr));}array_shift($arr);}echo "$arr[0]";}monkeyKing(6,4);//5法二&#xff1a;function king($m ,$n){//构造…

java 队列和堆栈_Java中的堆栈和队列

java 队列和堆栈我最近一直在研究一些需要堆栈和队列的Java代码。 使用的选择不是立即显而易见的。 有一个Queue接口&#xff0c;但没有明确的具体实现要使用。 还有一个Stack类&#xff0c;但是javadocs指出其他类“应该优先于此类使用”。 那么&#xff0c;您对Java中的堆栈和…

dbassit 包_CELINE新包,篮子包、圆盒包、腋下包、托特包等

CELINE 2021春夏女装系列以纪录片形式发布&#xff0c;由创意总监 Hedi Slimane 执导并设计配乐&#xff0c;在摩纳哥路易二世体育场取景。CELINE 2021春夏时装秀本季作品以「一代人的肖像」为题&#xff0c;在复古优雅中融入富有街头感的运动元素。CELINE 2021春夏时装秀女孩们…

Php数组面包屑导航,php可应用于面包屑导航的迭代寻找家谱树实现方法

php是通过定义类来实现迭代器接口来构造迭代器&#xff0c;通过yield构造迭代器可以提高性能并节省系统开销&#xff0c;下面就跟着爱站技术频道小编的步伐来学习php可应用于面包屑导航的迭代寻找家谱树实现方法吧。具体实现方法如下&#xff1a;echo "";$area arra…

bootstrap 悬浮固定_CST Tech Tips - 流式细胞术中如何固定和通透细胞?

CST TECH TIPS 系列课程 欢迎关注「CST博士互助平台」 有关流式细胞术(Flow Cytometry&#xff0c;FCM)实验步骤中的固定和通透化&#xff0c;你需要了解什么&#xff1f;进行流式细胞术&#xff0c;如果你所有的靶标均在外表面表达&#xff0c;那么可使用活细胞。但当你靶向胞…

php按钮css样式,CSS 按钮

CSS 按钮本章节我们为大家介绍使用 CSS 来制作按钮。我们先看一下默认按钮和用css制作的按钮html>php中文网(php.cn).button {background-color: #4CAF50;border: none;color: white;padding: 15px 32px;text-align: center;text-decoration: none;display: inline-block;fo…

电脑网络维护_电脑维护小技巧(全面)

如果你真的想了解&#xff0c;请耐心看完&#xff0c;都是干货电脑使用维护小技巧1、电脑为何莫名奇妙多了那么多软件呢&#xff1f; 有的人在使用电脑时候会经常发现&#xff0c;电脑无缘无故会冒出很多不知道的软件&#xff0c;“没见过、不是我下载的、卸载不掉”&#xff0…

自动装箱自动拆箱java,自动装箱?拆箱?==问题?详解java面试常见的一个问题...

1&#xff1a;前言相信大家都在面试中都被问到过一个问题&#xff0c;这个问题也是近年来面试官刁难人比较常见的一个问题&#xff0c;所以也被大家所熟知了&#xff0c;本质上也很简单&#xff0c;但是也是非常基础的一个题目。Integer a 100;Integer b 100;System.out.prin…

javafx 加载_JavaFX 2:如何加载图像

javafx 加载这是有关如何在JavaFX 2应用程序中加载图像的JavaFX教程。 使用ImageView可以轻松完成此操作。 ImageView是一个节点&#xff0c;用于绘制加载有Image类的图像。 因此&#xff0c;您将首先使用Image类加载图像&#xff0c;然后使用ImageView显示它。 我还将在这里演…

Juniper 210 密码清不掉_工程人不会看图纸?210页建筑识图详细教程,把你教得明明白白...

工程人不会看图纸&#xff1f;210页高清建筑识图详细教程&#xff0c;把你教得明明白白身为工程人&#xff0c;看不懂图纸有多可怕&#xff1f;可以说&#xff0c;举步维艰&#xff0c;寸步难行&#xff01;将复杂的图纸最简单化&#xff0c;这是我们工程人学会建筑识图的目的和…

couchbase_使用Couchbase分页

couchbase如果在对Couchbase集群进行查询时必须处理大量文档&#xff0c;则使用分页来逐页获取行很重要。 您可以在“ 分页 ”一章的文档中找到一些信息&#xff0c;但是我想在本文中详细介绍示例代码。 在此示例中&#xff0c;我将基于啤酒样本数据集创建一个简单的视图&…

Network下方什么请求也没有_今日头条上传图片时设置封面图报像素低的原因是什么...

今日头条发表原创图文时&#xff0c;在设置文章封面三张图时&#xff0c;有时候会遇到错误信息“部分图片实际像素低于172*120, 不支持设置为封面”。然而我上传的每张图片都是大小超过4MB的高清晰图片&#xff0c;怎么可能像素低于172 * 120? 因为我是个程序猿&#xff0c;所…

php提前用户系统时间限制,php date()比服务器时间提前一小时(DST问题)

我正在尝试排除故障并解决此问题:我正在使用的服务器(Linux上的PHP5.2.9)具有正确的本地时间(美洲/布宜诺斯艾利斯):userserver [/home/site/public_html]$ dateMon Nov 1 17:11:14 ART 2010php.ini设置为date.timezone "America/Buenos_Aires"ini_set(display_erro…

单缝衍射matlab,MATLAB模拟光的单缝衍射

我使用32位R2012a版&#xff0c;32位windows 7系统模拟此程序时第一句出现错误&#xff0c;不知道是什么原因。第一次学习使用MATLAB&#xff0c;希望老师们能帮助&#xff0c;谢谢您们。function Varargoutmygui_1002(varargin)gui_Singleton1;gui_Statestruct(gui Name, mf…

认识适配器:JSON绑定概述系列

适配器通过实现JsonbAdapter接口来配置自定义对象的创建和序列化。 方法AdaptToJson&#xff08;&#xff09;和AdaptFromJson&#xff08;&#xff09;被执行序列化和反序列化操作的逻辑覆盖。 下一篇文章介绍了使用自定义序列化器和反序列化器自定义JSON-B的最高级方法。 在…

微软新浏览器_要超越Chrome?微软新发布的这款浏览器,有翻天覆地的变化!

可爱的分割线系统迷还记得&#xff0c;当年Edge浏览器刚发布的时候&#xff0c;真的是备受期待。可惜的是&#xff0c;由于其糟糕的体验&#xff0c;以及不完善的插件&#xff0c;最终让它变成了第二个IE。可能是出于无奈&#xff0c;微软选择放弃自家渲染引擎&#xff0c;改用…

centos mount 用法_linux screen的用法 - mouseleo

12016.04.02 17:34:56字数 1,019阅读 26,104大家在初次接触linuxVPS时&#xff0c;会发现linux操作和windows操作太不相同的&#xff0c;windows都是图形操作界面&#xff0c;而linux一般是命令行操作&#xff0c;当然&#xff0c;linux也有图形操作界面&#xff0c;但是我们在…