`
海浪儿
  • 浏览: 274625 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

如何校验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;
    }
}

 

0
0
分享到:
评论

相关推荐

    RSA数字签名源代码

    例如,在网络通信、文件传输、电子合同等领域,RSA数字签名能够有效地防止中间人攻击,保护用户数据不被篡改,确保交易的合法性。在阅读和理解提供的源代码时,应重点关注密钥管理、哈希计算、签名生成和验证等关键...

    Java使用RSA加密解密签名及校验

    数字签名则是发送者使用自己的私钥对信息进行签名,接收者使用发送者的公钥来验证签名的合法性。 以下是Java中实现RSA加密解密的基本步骤: 1. **生成密钥对**: 使用`java.security.KeyPairGenerator`类生成RSA...

    使用RSA进行注册码验证的例子

    在“使用RSA进行注册码验证的例子”中,我们可以理解为一个软件或服务提供商为了确保其产品的合法性,采用了RSA算法来生成注册码。这个过程通常包括以下几个步骤: 1. **密钥生成**:首先,软件开发者会生成一对RSA...

    AES+RSA加解密demo源码(js和java互通).zip

    - **完整性校验**:使用如HMAC或消息认证码(MAC)来验证数据在传输过程中是否被篡改。 6. **代码实现**: "demo.html"可能包含了使用JavaScript进行RSA和AES加解密的示例代码,而"js"和"java"目录下的文件则分别...

    API接口安全策略文档

    API接口应只接受经过认证的应用程序的请求,这通常涉及到分配唯一的APP ID和Secret,使得服务端可以通过APP ID查找出对应的Secret,以此验证请求来源的合法性。 其次,为了防止篡改攻击,即请求在传输过程中被修改...

    PluginOK中间件安全解决方案2

    同时,小程序的安全接口集中在连接请求服务和卸载过程,采用RSA公钥加密的Token进行安全校验,确保了通信的安全和隐私。 在连接请求服务时,例如DLL或EXE弹窗小程序服务,会通过特定的协议格式传递包含Token的参数...

    云数据传输加密及完整性校验方案.pdf

    根据提供的文件信息,我们可以提炼以下有关云数据传输加密及完整性校验方案的知识点: 一、云数据传输加密的重要性 在数字化时代,云服务已经成为企业和个人存储、处理和传输数据的关键途径。然而,这也带来了数据...

    license 生成license文件demo

    5. **客户端验证**:客户端接收到license文件后,使用公钥进行解密或验证签名,确认其合法性。 在"LicenseFinal"这个文件名中,"Final"可能意味着这是经过一系列处理后的最终版许可证文件,可能已经包含了所有必要...

    CryptAPI函数调用实例(修改后)

    6. **验证签名**:对于已签名的文件,可以使用CryptVerifySignature函数和公钥来验证签名的合法性。如果签名验证成功,意味着文件自签名以来没有被修改过。 这个实例不仅涵盖了基础的加密解密操作,还涉及到了数字...

    易语言-易语言签名验证例子

    然后,接收方收到数据和签名后,使用发送方的公钥来验证签名的合法性,确认数据未被篡改。如果验证成功,说明数据在传输过程中保持完整,未遭第三方修改。 在"易语言数字签名应用"这个压缩包文件中,可能包含了...

    一种数字签名系统的设计与实现

    - **安全性高**:通过非对称加密技术,确保只有合法持有公钥的一方才能验证签名。 - **可靠性强**:MD5算法能够有效地检测数据的任何改变。 - **易于实现**:利用现有的密码学库,开发人员可以快速构建出完整的数字...

    D1_Tina_Linux_安全_开发指南1

    它通常涉及到公钥基础设施(PKI),通过验证固件的数字签名来确保其合法性。 - **生成安全固件**:这个过程包括配置固件以支持安全启动,创建签名密钥,以及管理固件版本。内核镜像格式需要特别配置,以适应安全...

    C# 注册码注册机制 实例源码(加密解密)

    接着,哈希函数如SHA256或MD5常常被用来生成数据的唯一标识,用于校验注册码的合法性。开发者可能在注册码生成时计算一个哈希值,然后在验证时对比用户的输入与服务器保存的哈希值是否一致,从而判断注册码是否有效...

    电子商务系统的安全控制培训课件.pptx

    认证机构(CA,Certification Authority)是第三方信任机构,负责颁发和管理数字证书,确保公钥的合法性,防止中间人攻击。 总结: 电子商务系统的安全控制是确保在线交易安全的核心。这包括满足信息保密性、交易者...

    易语言程序注册例程.7z

    1. **加密算法**:注册过程中通常涉及到加密技术,比如简单的异或运算、MD5哈希、RSA公钥私钥对等,用以保护注册信息不被轻易破解。 2. **数据校验**:在接收用户输入的注册信息后,程序会通过校验算法比较用户输入...

    吐血推荐加密解密证书PKI

    PKI的核心是CA,它负责验证用户身份并签发数字证书,将用户的公钥和其他信息绑定,确保公钥的合法性。 1. 安装独立根CA:作为整个PKI的信任根,根CA的建立至关重要,其颁发的证书被视为绝对可信。 2. 安装独立从属...

    android 关于利用签名的SHA1进行安全校验的方法之一(推荐)

    SHA1(Secure Hash Algorithm 1)是一种广泛使用的哈希函数,它能将任意长度的数据转化为固定长度的摘要,通常用于数据的完整性校验。在Android中,SHA1签名主要用于确认应用未被篡改。当开发人员创建一个APK并签署...

    加密算法(多种算法)

    4. **公钥基础设施(PKI, Public Key Infrastructure)**:一种系统,包括了证书颁发机构(CA)、数字证书和证书撤销列表(CRL),用于管理和验证公钥的合法性。 5. **RSA密钥交换**:如Diffie-Hellman和ECDH协议,用于...

Global site tag (gtag.js) - Google Analytics