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

聊城做网站乐都网站建设多少钱

聊城做网站,乐都网站建设多少钱,网站建设公司落寞,自动点击器appJAVA集成国密SM2加解密 一、pom配置二、代码集成2.1、目录结构2.2、源码2.3、测试 三、相关链接 国密算法概述#xff1a;https://blog.csdn.net/qq_38254635/article/details/131801527 SM2椭圆曲线公钥密码算法 为非对称加密#xff0c;基于ECC。该算法已公开。由于该算法… JAVA集成国密SM2加解密 一、pom配置二、代码集成2.1、目录结构2.2、源码2.3、测试 三、相关链接 国密算法概述https://blog.csdn.net/qq_38254635/article/details/131801527 SM2椭圆曲线公钥密码算法 为非对称加密基于ECC。该算法已公开。由于该算法基于ECC故其签名速度与秘钥生成速度都快于RSA。ECC 256位SM2采用的就是ECC 256位的一种安全强度比RSA 2048位高但运算速度快于RSA。 一、pom配置 !-- 国密 -- dependencygroupIdorg.bouncycastle/groupIdartifactIdbcprov-jdk15to18/artifactIdversion1.66/version /dependency二、代码集成 2.1、目录结构 2.2、源码 KeyConstant.java package com.secret.sm2;public class KeyConstant {public static final String PRIVATE_KEY pveky; // 私钥public static final String PUBLIC_KEY pbcky; // 公钥public static final String GM_NAME_CURVE sm2p256v1;public static final String ALGORITHM SHA1PRNG;}ModeTypeConstant.java package com.secret.sm2;import org.bouncycastle.crypto.engines.SM2Engine;public class ModeTypeConstant {public static final String BASE base;public static final String BC bc;Deprecatedpublic static final SM2Engine.Mode BASE_MODE SM2Engine.Mode.C1C3C2;Deprecatedpublic static final SM2Engine.Mode BC_MODE SM2Engine.Mode.C1C2C3;public static ModeTypeEnum getMode(String modeType){if (ModeTypeEnum.BASE_MODE.getType().equals(modeType)) return ModeTypeEnum.BASE_MODE;return ModeTypeEnum.BC_MODE;}}ModeTypeEnum.java package com.secret.sm2;import org.bouncycastle.crypto.engines.SM2Engine;public enum ModeTypeEnum {BASE_MODE(ModeTypeConstant.BASE, SM2Engine.Mode.C1C3C2),BC_MODE(ModeTypeConstant.BC, SM2Engine.Mode.C1C2C3);private String type;private SM2Engine.Mode mode;ModeTypeEnum(String type, SM2Engine.Mode mode) {this.type type;this.mode mode;}public String getType(){return type;}public SM2Engine.Mode getMode(){return mode;}}SecretCommon.java package com.secret.sm2;import org.bouncycastle.asn1.gm.GMNamedCurves; import org.bouncycastle.asn1.x9.X9ECParameters; import org.bouncycastle.crypto.AsymmetricCipherKeyPair; import org.bouncycastle.crypto.InvalidCipherTextException; import org.bouncycastle.crypto.engines.SM2Engine; import org.bouncycastle.crypto.generators.ECKeyPairGenerator; import org.bouncycastle.crypto.params.ECDomainParameters; import org.bouncycastle.crypto.params.ECKeyGenerationParameters; import org.bouncycastle.crypto.params.ECPrivateKeyParameters; import org.bouncycastle.crypto.params.ECPublicKeyParameters; import org.bouncycastle.crypto.params.ParametersWithRandom; import org.bouncycastle.math.ec.ECPoint; import org.bouncycastle.pqc.math.linearalgebra.ByteUtils; import org.bouncycastle.util.encoders.Hex; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.math.BigInteger; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.HashMap; import java.util.Map;/*** SM2公钥密码算法非对称算法* SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法。* 包括SM2-1椭圆曲线数字签名算法SM2-2椭圆曲线密钥交换协议SM2-3椭圆曲线公钥加密算法分别用于实现数字签名密钥协商和数据加密等功能。* SM2算法与RSA算法不同的是SM2算法是基于椭圆曲线上点群离散对数难题相对于RSA算法256位的SM2密码强度已经比2048位的RSA密码强度要高。*/ public class SecretCommon {//获取椭圆曲线public static synchronized ECDomainParameters getECDomainParameters() {X9ECParameters sm2ECParameters GMNamedCurves.getByName(KeyConstant.GM_NAME_CURVE);return new ECDomainParameters(sm2ECParameters.getCurve(), sm2ECParameters.getG(), sm2ECParameters.getN());}/*** get key pair*/public static MapString, String createKeyPair() throws NoSuchAlgorithmException {ECKeyPairGenerator keyPairGenerator new ECKeyPairGenerator();keyPairGenerator.init(new ECKeyGenerationParameters(getECDomainParameters(), SecureRandom.getInstance(KeyConstant.ALGORITHM)));AsymmetricCipherKeyPair asymmetricCipherKeyPair keyPairGenerator.generateKeyPair();MapString, String map new HashMap();BigInteger bigInteger ((ECPrivateKeyParameters) asymmetricCipherKeyPair.getPrivate()).getD();map.put(KeyConstant.PRIVATE_KEY, ByteUtils.toHexString(bigInteger.toByteArray()));// 把公钥放入map中,默认压缩公钥// 公钥前面的02或者03表示是压缩公钥,04表示未压缩公钥,04的时候,可以去掉前面的04ECPoint ecPoint ((ECPublicKeyParameters) asymmetricCipherKeyPair.getPublic()).getQ();map.put(KeyConstant.PUBLIC_KEY, ByteUtils.toHexString(ecPoint.getEncoded(false)));return map;}/*** 加密* param plainText 需加密的明文字符串* param publicKey 公钥* param modeType base:标准bcBC模式*/public static String encrypt(String plainText, String publicKey, ModeTypeEnum modeType) throws IOException, InvalidCipherTextException {return encrypt(plainText.getBytes(), publicKey, modeType.getMode());}/*** 加密* param plainByte 需加密的明文字节数组* param publicKey 公钥* param mode 加密模式 ModeTypeEnum*/public static String encrypt(byte[] plainByte, String publicKey, SM2Engine.Mode mode) throws IOException, InvalidCipherTextException {ECDomainParameters domainParameters getECDomainParameters();//提取公钥点ECPoint ecPoint domainParameters.getCurve().decodePoint(ByteUtils.fromHexString(publicKey));// 公钥前面的02或者03表示是压缩公钥04表示未压缩公钥, 04的时候可以去掉前面的04ECPublicKeyParameters publicKeyParameters new ECPublicKeyParameters(ecPoint, domainParameters);SM2Engine sm2Engine new SM2Engine(mode);sm2Engine.init(true, new ParametersWithRandom(publicKeyParameters, new SecureRandom()));return ByteUtils.toHexString(sm2Engine.processBlock(plainByte, 0, plainByte.length));}/*** 解密* param cipherText 需加密的字符串* param privateKey 私钥* param modeType base:标准bcBC模式*/public static String decrypt(String cipherText, String privateKey, ModeTypeEnum modeType) throws InvalidCipherTextException, UnsupportedEncodingException {return decrypt(Hex.decode(cipherText), privateKey, modeType.getMode());}/*** 解密* param cipherDataByte 密文字节数组* param privateKeyHex 私钥* param mode 解密模式 ModeTypeEnum*/public static String decrypt(byte[] cipherDataByte, String privateKeyHex, SM2Engine.Mode mode) throws InvalidCipherTextException, UnsupportedEncodingException {BigInteger bigInteger new BigInteger(privateKeyHex, 16);ECPrivateKeyParameters privateKeyParameters new ECPrivateKeyParameters(bigInteger, getECDomainParameters());SM2Engine sm2Engine new SM2Engine(mode);sm2Engine.init(false, privateKeyParameters);return new String(sm2Engine.processBlock(cipherDataByte, 0, cipherDataByte.length), utf-8);}}Utils.java package com.secret.sm2;import org.bouncycastle.crypto.InvalidCipherTextException; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.NoSuchAlgorithmException; import java.util.Map;public class Utils {/*** get key pair*/public static MapString, String createKeyPair() throws NoSuchAlgorithmException {return SecretCommon.createKeyPair();}/*** encrypt* param plainText 需加密的明文字符串* param publicKey 公钥*/public static String encrypt(String plainText, String publicKey) throws IOException, InvalidCipherTextException {return encrypt(plainText, publicKey, ModeTypeConstant.BASE);}/*** encrypt* param plainText 需加密的明文字符串* param publicKey 公钥* param modeType base:标准bcBC模式*/public static String encrypt(String plainText, String publicKey, String modeType) throws IOException, InvalidCipherTextException {return SecretCommon.encrypt(plainText, publicKey, ModeTypeConstant.getMode(modeType));}/*** decrypt* param cipherText 需加密的字符串* param privateKey 私钥*/public static String decrypt(String cipherText, String privateKey) throws InvalidCipherTextException, UnsupportedEncodingException {return decrypt(cipherText, privateKey, ModeTypeConstant.BASE);}/*** decrypt* param cipherText 需加密的字符串* param privateKey 私钥* param modeType base:标准bcBC模式*/public static String decrypt(String cipherText, String privateKey, String modeType) throws InvalidCipherTextException, UnsupportedEncodingException {return SecretCommon.decrypt(cipherText, privateKey, ModeTypeConstant.getMode(modeType));}}测试类Test.java package com.secret.sm2;import java.util.Map;public class Test {public static void main(String[] args) throws Exception {MapString, String createKeyPair Utils.createKeyPair();System.out.println(秘钥对 createKeyPair);String privateKey createKeyPair.get(KeyConstant.PRIVATE_KEY);String publicKey createKeyPair.get(KeyConstant.PUBLIC_KEY);String text I believe you can do anything;String encrypt Utils.encrypt(text, publicKey);System.out.println(加密后密文 encrypt);String decrypt Utils.decrypt(encrypt, privateKey);System.out.println(解密后明文 decrypt);}}2.3、测试 测试结果如图 使用方法参考测试类即可。 三、相关链接 国密算法概述https://blog.csdn.net/qq_38254635/article/details/131801527 JAVA集成国密SM3https://blog.csdn.net/qq_38254635/article/details/131810696 JAVA集成国密SM4https://blog.csdn.net/qq_38254635/article/details/131810715
http://www.sadfv.cn/news/40956/

相关文章:

  • 玉树营销网站建设多少钱深圳网站设计是什么
  • 电子商务网站建设与维护实训常州网站建设推荐
  • 北京icp网站备案深圳入户申请网站官网
  • 昆山做网站的公昆山做网站的公司司做网站入门看什么书
  • 优质的广州微网站建设怎么给网站wordpress
  • 营销方案网站朝阳区搜索优化seosem
  • 静态网站怎么容易做赣州快云科技有限公司
  • 高端网站建设哪些好做网站腾讯云服务器
  • 佛山微网站推广石家庄住房建设厅网站
  • 如何攻击织梦做的网站商城网站建设推荐
  • 北京网站建设佳v询 lotlek 能上词wordpress主题 大前端 阿里百秀 xiu
  • 中国建设银行ie下载网站国内企业网站模板
  • 百度不收录网站描述国外客户推广网站
  • 高性能网站建设指南 书wordpress 电台网站
  • 网站优化一般怎么做湖南企业网络推广软件
  • 商务网站需求分析学软件开发需要学什么
  • 学习做网站可以吗php网站开发实战教程
  • 电子商务网站推广方法和技巧wordpress不安装先写前端
  • 网站备案在哪里审批工程公司招聘
  • 网站开发的项目内容flash网站推荐
  • 泗阳县住房和建设局网站东营网站关键词
  • 手机网站可以做百度商桥吗海南省建设网站的公司
  • 四川建设厅报名网站wordpress数据恢复
  • 购物网站名字网站 关键词库 怎么做
  • 网站设置301解除移动屏蔽谷歌外链
  • 建设网站转赚钱吗建设局网站管理办法
  • 苏州个人网站制作邯郸信息港招聘信息
  • 建设银行关闭网站查询信用卡账单网站的整合
  • 成都科技网站建设找百度 模块网站
  • 陕西高端品牌网站建设建立网站需要什么软件