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

黑龙江省住房与建设厅网站软件开发 网站建设

黑龙江省住房与建设厅网站,软件开发 网站建设,wordpress文章图片很小,北京网站建设中心BouncyCastle,即BC,其是一款开源的密码包,包含了大量的密码算法。 本篇主要演示BC库引入,对称加密算法AES、SM4和 非对称加密EC算法的简单实现,以下是实现过程。 一、将BC添加到JRE环境 前提:已安装JRE环…

BouncyCastle,即BC,其是一款开源的密码包,包含了大量的密码算法。
本篇主要演示BC库引入对称加密算法AES、SM4非对称加密EC算法的简单实现,以下是实现过程。

一、将BC添加到JRE环境

前提:已安装JRE环境,本地环境为jdk1.8

第一步、修改java.security文件

查找JDK安装位置,可执行 where javac
在这里插入图片描述
到 目录(D:\eclipse-ide\resource\java\jdk1.8.0_151\jre\lib\security)找到 java.security 文件,管理员方式打开,添加以下内容。

security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider

添加位置和效果,如下图所示。
在这里插入图片描述

第二步、将BC的jar保添加到指定目录

即(D:\eclipse-ide\resource\java\jdk1.8.0_151\jre\lib\ext)下。
在这里插入图片描述

二、将BC库添加到项目

新建项目 -> 命名为 bcprovdemo,将 bcprov-ext-jdk15on-165.jar复制到项目的 lib文件下。
在这里插入图片描述
在 jar包右键-> Build Path -> Add to Build Patch ,将其添加到构建路径下
在这里插入图片描述
添加成功如下所示。
在这里插入图片描述

三、测试环境中 provider 是否正确

新建Java类-ProviderTest,使用到 security 包中的Provider和Security。

import java.security.Provider;
import java.security.Security;
import java.util.Map;public class ProviderTest {public static void main(String [] args) {// 添加BC库BouncyCastleProvider bcp = new BouncyCastleProvider();Security.addProvider(bcp);for(Provider p : Security.getProviders()) {System.out.println("当前遍历的p值为:"+ p);int cout = 1;for(Map.Entry<Object, Object> entry : p.entrySet()) {System.out.println("\t"+entry.getKey());cout++;if(cout>5)break;}}}
}

执行结果如下所示。
在这里插入图片描述
其打印的结果即 java.security 文件中的配置信息。
在这里插入图片描述

四、对称密钥生成
1)对称密钥算法 AES

AES可指定生成长度,默认为128,生成代码如下所示。

import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import org.bouncycastle.util.encoders.Hex;
public class HexTest {void keyg() throws NoSuchAlgorithmException {SecureRandom sr = new SecureRandom();// 实例化KeyGenerator kg = KeyGenerator.getInstance("AES");// AES默认为128,三种长度 128192 256kg.init(192, sr);SecretKey sk = kg.generateKey();byte[] b = sk.getEncoded();System.out.println("密钥十六进制值为:" + Hex.toHexString(b));}// 调用密钥public static void main(String[] args) throws NoSuchAlgorithmException {HexTest ht = new HexTest();ht.keyg();}
}

结果如下图所示。
在这里插入图片描述

2)对称密钥 SM4算法

SM4算法 需要引入 BC库,其也可不指定长度,实现代码如下所示。

import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.Security;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.util.encoders.Hex;public class HexTest {void keyg() throws NoSuchAlgorithmException {// 添加BC库BouncyCastleProvider bcp = new BouncyCastleProvider();Security.addProvider(bcp);SecureRandom sr = new SecureRandom();// 实例化KeyGenerator kg = KeyGenerator.getInstance("SM4");// SM4 可不指定长度kg.init(sr);SecretKey sk = kg.generateKey();byte[] b = sk.getEncoded();System.out.println("SM4-密钥十六进制值为:" + Hex.toHexString(b));}// 调用密钥public static void main(String[] args) throws NoSuchAlgorithmException {HexTest ht = new HexTest();ht.keyg();}
}

控制台打印输出如下所示。
在这里插入图片描述

五、非对称密钥生成

非对称加密EC算法,引入BC库,其是以对出现,即公钥和私钥。实现代码如下所示。

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.Security;import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.util.encoders.Hex;public class KeyPairTest {public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchProviderException {// 添加BC库BouncyCastleProvider bcp = new BouncyCastleProvider();Security.addProvider(bcp);// 密钥对实例KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC", "BC");// KeyPairGenerator kpg = KeyPairGenerator.getInstance("RAS"); // 椭圆曲线// 初始化kpg.initialize(256);// 产生密钥对KeyPair key = kpg.genKeyPair();byte[] b = key.getPublic().getEncoded();// 公钥短,验证签名快System.out.println("生成的公钥为:" + Hex.toHexString(b));b = key.getPrivate().getEncoded();// 私钥长,验证签名慢System.out.println("生成的私钥为:" + Hex.toHexString(b));}
}

控制台打印输出如下所示。
在这里插入图片描述

http://www.15wanjia.com/news/169848.html

相关文章:

  • 学做西餐网站led论坛网站建设
  • 苏州论坛型网站建设保健品商城网站模板
  • 网站公共模板是什么wordpress获得授权
  • 杭州做公司网站哪家好西安官网seo推广
  • 户型图在哪个网站找如何做网站广告图片
  • 河北省沧州建设厅网站企业手机网站
  • 衡水市网站建设推广通
  • 连云港集团网站建设关键词优化需要注意
  • 图书馆建设网站打不开如何写一份企业网站建设方案
  • 免费vip网站推广电话销售网站建设
  • 外国优秀设计网站宜兴建设局网站
  • 南昌网站建设搜q.479185700wordpress免插件增强
  • 推荐电子商务网站建设有关网站升级建设的申请书
  • 北京模板建站软件设计师培训基地
  • php网站怎么做伪静态河北中瑞建设集团有限公司网站
  • 国外免费建站网站西安公司做网站
  • 南京网站搜索排名山东省建设人才网站
  • 加强网站网络安全建设方案信息系网站建设开题报告书
  • 网站设计分析报告做私单的网站
  • 免费发布卖车信息网站外国做挂的网站是多少
  • 档案网站开发浙江网站推广公司
  • 网站服务器费用明细公司网站开发的工作内容
  • 国内设计大神网站苏州做网站公司 询苏州聚尚网络
  • 志愿者网站 建设方案新变更营业执照注册号查了发现之前有备案过网站了
  • 做流程图用什么网站好濮阳网站关键词
  • 机械产品做哪个网站网站推广 昆明
  • 网站更新seo菜市场做建筑设计图库的网站设计
  • 青岛app网站开发东莞市房管局官方网站
  • 重庆求建网站营销网建
  • seo如何选择网站标题电商设计和平面设计哪个好