如何校验RSA公钥的合法性
程序员文章站
2022-07-04 14:37:30
...
最近在做开放平台相关的项目,外部开发者(isv)创建应用前,需要生成一对RSA公私钥对,私钥自己保留,公钥上传给我们。Isv的应用访问公司服务时,需要用私钥对请求进行加签,然后我们用他之前提供的公钥进行验签。
当isv将公钥上传后,需要对公钥的合法性进行验证,以下是验证工具类
/** * RSA密钥合法性验证器 * * @author xianwu.zhang * @version $Id: RSAkeyChecker.java, v 0.1 2012-10-29 下午04:59:09 xianwu.zhang Exp $ */ public class RSAkeyChecker { /** 日志 */ private static final Logger logger = LoggerFactory.getLogger(RSAkeyChecker.class); /** * 检查公钥的合法性 * * @param key 经过base64编码的公钥key * @return 生成公钥未抛异常,则返回<code>true</code>,否则返回<code>false</code> */ public static boolean checkPublicKey(String key) { if (StringUtil.isBlank(key)) { return false; } try { getPublicKey(key); return true; } catch (Exception e) { logger.error("RSA公钥合法性校验失败", e); return false; } } /** * 生成RSA公钥 * * @param key 经过base64编码的公钥key * @return rsa公钥 * @throws Exception key不合法,则抛异常 */ public static PublicKey getPublicKey(String key) throws Exception { byte[] keyBytes = (byte[]) Base64.decodeBase64(key.getBytes()); X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PublicKey publicKey = keyFactory.generatePublic(keySpec); return publicKey; } }
上一篇: 小龙人就是这么来的??
下一篇: 如果你是我你会怎么做