首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

怎么校验RSA公钥的合法性

2012-12-15 
如何校验RSA公钥的合法性? ? 最近在做开放平台相关的项目,外部开发者(isv)创建应用前,需要生成一对RSA公私

如何校验RSA公钥的合法性

? ? 最近在做开放平台相关的项目,外部开发者(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;    }}
?

热点排行