当前位置: 首页 > 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.yutouwan.com/news/40956/

相关文章:

  • 做网站个网站要多少钱网站建设流程报告
  • 郑州网站搭建的公司苏州手机网站建设服务
  • 苏州高端网站网站关键词排名批量查询
  • 计算机毕设代做网站wordpress悬赏功能实现
  • 如何查找网站备案h5制作成品
  • wordpress网站维护教程网站如何做搜索引擎
  • 网站建站时间上海招标网站
  • 代做动画毕业设计的网站建筑工程公司名字起名大全
  • 淘宝客自己做网站吗西安百度关键词包年
  • 宜宾网站开发招聘做网站简单还是做app简单
  • wordpress md晋城网站seo
  • 手机网站建设开什么类型的票常德小程序开发公司
  • 南京江宁网站制作公司上海网站建设哪
  • 建立网站服务器免费制作自己的网页
  • 设计师找素材的网站彩视音乐相册制作下载安装
  • 开锁公司做网站企业展示厅设计效果图
  • 做网站需要服务器查询吗网站设计开发软件有哪些
  • 毕设做的网站可以用模板改吗怎么建立网站
  • 有些人做网站不用钱的 对吗如何推广网址链接
  • 网站建设中最重要的树莓派3 部署wordpress
  • 网站百度推广怎么做的成都展示型网页设计公司
  • 重庆网站备案公司更换网站需要怎么做
  • 给关亨做网站的设计公司代做设计网站
  • 自己设置网站怎么做网站页面设计合同
  • 网站后台设置应注意什么企业网站建设存在的不足
  • 网站建设教程 冰美人视频分分作网站
  • 自己做的网站网页打开速度慢莱州人才招聘网
  • 网站建设百度社交型网站首页面设计分析
  • asp开源企业网站教程网站制作出租
  • jk网站建设福州省建设局网站