java publickey类_关于keycloak源码包中KeyUtils密钥工具类获取常用javax.crypto.SecretKey、java.security.PublicKey、java.s...

一、前言

关于keycloak的keycloak-common源码包org.keycloak.common.util.KeyUtils密钥工具类, 获取javax.crypto.SecretKey密钥、生成java.security.KeyPair密钥对、根据私钥java.security.PrivateKey获取extractPublicKey公钥java.security.PublicKey等。

二、源码说明package org.keycloak.common.util;@b@@b@import javax.crypto.SecretKey;@b@import javax.crypto.spec.SecretKeySpec;@b@import java.security.Key;@b@import java.security.KeyFactory;@b@import java.security.KeyPair;@b@import java.security.KeyPairGenerator;@b@import java.security.MessageDigest;@b@import java.security.NoSuchAlgorithmException;@b@import java.security.PrivateKey;@b@import java.security.PublicKey;@b@import java.security.interfaces.RSAPrivateCrtKey;@b@import java.security.spec.RSAPublicKeySpec;@b@@b@ @b@public class KeyUtils {@b@@b@    private static final String DEFAULT_MESSAGE_DIGEST = "SHA-256";@b@@b@    private KeyUtils() {@b@    }@b@@b@    public static SecretKey loadSecretKey(byte[] secret, String javaAlgorithmName) {@b@        return new SecretKeySpec(secret, javaAlgorithmName);@b@    }@b@@b@    public static KeyPair generateRsaKeyPair(int keysize) {@b@        try {@b@            KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");@b@            generator.initialize(keysize);@b@            KeyPair keyPair = generator.generateKeyPair();@b@            return keyPair;@b@        } catch (Exception e) {@b@            throw new RuntimeException(e);@b@        }@b@    }@b@@b@    public static PublicKey extractPublicKey(PrivateKey key) {@b@        if (key == null) {@b@            return null;@b@        }@b@@b@        try {@b@            RSAPrivateCrtKey rsaPrivateCrtKey = (RSAPrivateCrtKey) key;@b@            RSAPublicKeySpec publicKeySpec = new RSAPublicKeySpec(rsaPrivateCrtKey.getModulus(), rsaPrivateCrtKey.getPublicExponent());@b@            KeyFactory keyFactory = KeyFactory.getInstance("RSA");@b@            return keyFactory.generatePublic(publicKeySpec);@b@        } catch (Exception e) {@b@            throw new RuntimeException(e);@b@        }@b@    }@b@@b@    public static String createKeyId(Key key) {@b@        try {@b@            return Base64Url.encode(MessageDigest.getInstance(DEFAULT_MESSAGE_DIGEST).digest(key.getEncoded()));@b@        } catch (NoSuchAlgorithmException e) {@b@            throw new RuntimeException(e);@b@        }@b@    }@b@@b@@b@}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值