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

建设公司网站怎么弄北京软件编程培训机构

建设公司网站怎么弄,北京软件编程培训机构,ok卡怎么在京东网上商城,网上商城网站建设方案书目录 一、SM2国密加解密算法1.1、pom文件引入依赖包1.2、SM2加解密工具类1.3、测试类 一、SM2国密加解密算法 1.1、pom文件引入依赖包 dependencygroupIdorg.bouncycastle/groupIdartifactIdbcprov-jdk18on/artifactIdversiondependencygroupIdorg.bouncycastle/groupIdartifactIdbcprov-jdk18on/artifactIdversion1.72/version/dependency1.2、SM2加解密工具类 SM2加解密工具类 package com.xz.utils; import org.bouncycastle.asn1.gm.GMNamedCurves; import org.bouncycastle.asn1.x9.X9ECParameters; import org.bouncycastle.crypto.engines.SM2Engine; import org.bouncycastle.crypto.params.*; import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey; import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.math.ec.ECPoint; import org.bouncycastle.util.encoders.Hex;import java.math.BigInteger; import java.security.*; import java.security.spec.ECGenParameterSpec; import java.util.HashMap; import java.util.Map;/*** 适用于前后端公用的SM2秘钥生成、加解密工具类*/ public class SimpSM2Util {/*** 公钥常量*/public static final String KEY_PUBLIC_KEY publicKey;/*** 私钥返回值常量*/public static final String KEY_PRIVATE_KEY privateKey;/*** SM2加密算法* param publicKey 公钥* param data 明文数据* return*/public static String encrypt(String publicKey, String data) {// 获取一条SM2曲线参数X9ECParameters sm2ECParameters GMNamedCurves.getByName(sm2p256v1);// 构造ECC算法参数曲线方程、椭圆曲线G点、大整数NECDomainParameters domainParameters new ECDomainParameters(sm2ECParameters.getCurve(), sm2ECParameters.getG(), sm2ECParameters.getN());//提取公钥点ECPoint pukPoint sm2ECParameters.getCurve().decodePoint(Hex.decode(publicKey));// 公钥前面的02或者03表示是压缩公钥04表示未压缩公钥, 04的时候可以去掉前面的04ECPublicKeyParameters publicKeyParameters new ECPublicKeyParameters(pukPoint, domainParameters);SM2Engine sm2Engine new SM2Engine(SM2Engine.Mode.C1C3C2);// 设置sm2为加密模式sm2Engine.init(true, new ParametersWithRandom(publicKeyParameters, new SecureRandom()));byte[] arrayOfBytes null;try {byte[] in data.getBytes();arrayOfBytes sm2Engine.processBlock(in, 0, in.length);} catch (Exception e) {System.out.println(SM2加密时出现异常:e.getMessage());}return Hex.toHexString(arrayOfBytes);}/*** SM2解密算法* param privateKey 私钥* param cipherData 密文数据* return*/public static String decrypt(String privateKey, String cipherData) {// 使用BC库加解密时密文以04开头传入的密文前面没有04则补上if (!cipherData.startsWith(04)){cipherData 04 cipherData;}byte[] cipherDataByte Hex.decode(cipherData);BigInteger privateKeyD new BigInteger(privateKey, 16);//获取一条SM2曲线参数X9ECParameters sm2ECParameters GMNamedCurves.getByName(sm2p256v1);//构造domain参数ECDomainParameters domainParameters new ECDomainParameters(sm2ECParameters.getCurve(), sm2ECParameters.getG(), sm2ECParameters.getN());ECPrivateKeyParameters privateKeyParameters new ECPrivateKeyParameters(privateKeyD, domainParameters);SM2Engine sm2Engine new SM2Engine(SM2Engine.Mode.C1C3C2);// 设置sm2为解密模式sm2Engine.init(false, privateKeyParameters);String result ;try {byte[] arrayOfBytes sm2Engine.processBlock(cipherDataByte, 0, cipherDataByte.length);return new String(arrayOfBytes);} catch (Exception e) {System.out.println(SM2解密时出现异常:e.getMessage());}return result;}/*** 生成密钥*/public static MapString, String createKey() throws Exception{ECGenParameterSpec sm2Spec new ECGenParameterSpec(sm2p256v1);// 获取一个椭圆曲线类型的密钥对生成器KeyPairGenerator kpg KeyPairGenerator.getInstance(EC, new BouncyCastleProvider());// 使用SM2参数初始化生成器kpg.initialize(sm2Spec);// 获取密钥对KeyPair keyPair kpg.generateKeyPair();PublicKey publicKey keyPair.getPublic();BCECPublicKey p(BCECPublicKey)publicKey;System.out.println(publicKeyHex.toHexString(p.getQ().getEncoded(false)));PrivateKey privateKey keyPair.getPrivate();BCECPrivateKey s(BCECPrivateKey)privateKey;System.out.println(privateKeyHex.toHexString(s.getD().toByteArray()));MapString, String result new HashMap();result.put(KEY_PUBLIC_KEY, Hex.toHexString(p.getQ().getEncoded(false)));result.put(KEY_PRIVATE_KEY, Hex.toHexString(s.getD().toByteArray()));return result;}}1.3、测试类 测试类 public static void main(String[] args) throws Exception {MapString, String key createKey();String publicKey key.get(KEY_PUBLIC_KEY);System.out.println(公钥publicKey);String privateKey key.get(KEY_PRIVATE_KEY);System.out.println(私钥privateKey);String strhello java123456;System.out.println(加密前结果str);String encrypt encrypt(publicKey, str);System.out.println(加密后结果encrypt);String decrypt decrypt(privateKey, encrypt);System.out.println(解密后结果decrypt); }测试结果如下图所示
http://www.zqtcl.cn/news/752500/

相关文章:

  • 网站建设公司 跨界鱼科技专业简述网站的制作步骤
  • 手机网站cms网站优化推广哪家好
  • 网站被k换域名qq空间 wordpress
  • 网站模板种类昆明cms建站模板
  • wordpress em企业网站做seo的优势
  • 设计师做私单网站全球最大的电商平台
  • 外贸联系网站wordpress 优惠券 插件
  • 公司网站开发费用兴田德润官方网站深圳百度快照优化
  • 做网站需要备案么行业网站策划
  • 去年做啥网站能致富周口seo推广
  • 主体负责人电话修改 网站备案什么样算网站需要备案
  • 网站建站免费空间外贸网站建设与优化
  • 网站极简设计建立网站基本知识
  • 网站建设管理标准wordpress rss采集
  • 乐清网站建设费用装修房子的app软件哪个好
  • 专业网站搭建运营工业网站素材
  • 建网站要会什么wordpress电影下载站
  • 济南设计网站的公司西安模板网站建设
  • 网站搜索功能如何实现网络培训学习心得体会
  • 网站设计方案书ppt网站展示型推广
  • 中国建设注册管理中心网站首页大连地区建设网站
  • 广州致峰网站建设藁城网络推广
  • 怎么做免费个人网站wordpress dux 5.3
  • 手机触屏版网站网站功能介绍
  • 商场设计案例青岛百度快速排名优化
  • 制作网站要步骤湖北省建设厅网站上岗证查询
  • 网站建设制作公司都选万维科技制作网站需要注意什么
  • jsp小型网站开发wordpress微博插件
  • app充值网站开发怎么去做网站
  • 合肥建站网站模板word上下页纸张方向