Java实现SM2前后端加解密_前后端 sm2 加解密,20道网络安全工程师面试必问题

本文提供了一种使用Java实现SM2加解密的方法,包括密钥对生成、十六进制和Base64编码转换,以及SM2加密和解密的详细步骤。同时,文章还提及了网络安全学习资源,包括成长路线图、视频合集、学习书籍、源码合集和面试题,适合网络安全工程师和面试者参考。
摘要由CSDN通过智能技术生成
  • @return
  • @throws NoSuchAlgorithmException
  • @throws InvalidAlgorithmParameterException
    */
    public static KeyPair geneSM2KeyPair() throws NoSuchAlgorithmException, InvalidAlgorithmParameterException {
    final ECGenParameterSpec sm2Spec = new ECGenParameterSpec(“sm2p256v1”);
    // 获取一个椭圆曲线类型的密钥对生成器
    final KeyPairGenerator kpg = KeyPairGenerator.getInstance(“EC”, new BouncyCastleProvider());
    // 产生随机数
    SecureRandom secureRandom = new SecureRandom();
    // 使用SM2参数初始化生成器
    kpg.initialize(sm2Spec, secureRandom);
    // 获取密钥对
    KeyPair keyPair = kpg.generateKeyPair();
    return keyPair;
    }

/**

  • 生产hex秘钥对
    /
    public static void geneSM2HexKeyPair(){
    try {
    KeyPair keyPair = geneSM2KeyPair();
    PrivateKey privateKey = keyPair.getPrivate();
    PublicKey publicKey = keyPair.getPublic();
    System.out.println(“======== EC X Y keyPair “);
    System.out.println(privateKey);
    System.out.println(publicKey);
    System.out.println(”
    hex keyPair ");
    System.out.println("hex priKey: " + getPriKeyHexString(privateKey));
    System.out.println(“hex pubKey: " + getPubKeyHexString(publicKey));
    System.out.println(”
    base64 keyPair ");
    System.out.println("base64 priKey: " + new String(Base64.getEncoder().encode(privateKey.getEncoded())));
    System.out.println(“base64 pubKey: " + new String(Base64.getEncoder().encode(publicKey.getEncoded())));
    System.out.println(”
    generate finished ========”);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    /
    *
  • 获取私钥(16进制字符串,头部不带00长度共64)
  • @param privateKey 私钥PrivateKey型
  • @return
    /
    public static String getPriKeyHexString(PrivateKey privateKey) {
    // OK
    // BCECPrivateKey s=(BCECPrivateKey)privateKey;
    // String priKeyHexString = Hex.toHexString(s.getD().toByteArray());
    // if(null!= priKeyHexString && priKeyHexString.length()==
  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值