公钥密钥 SHA1WithRSA 签名验证签名

生成签名

 /**
     * SHA1WithRSA 签名
     *
     * @param content    待签名数据
     * @param privateKey 私钥
     * @return 签名值
     */
    public static String sign(String content, String privateKey) {
        try {
            PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(Base64.decode(privateKey));
            KeyFactory keyf = KeyFactory.getInstance("RSA");
            PrivateKey priKey = keyf.generatePrivate(priPKCS8);
            // 这里签名使用的是 SHA1WithRSA
            Signature signature = Signature.getInstance("SHA1WithRSA");
            // 以私钥字符串初始化签名
            signature.initSign(priKey);
            // 将原始串注入签名中
            signature.update(content.getBytes());
            // 签名后的结果,以字符数组形式存在
            byte[] signed = signature.sign();
            // 签名后的结果,以base64编码形式存在
            return Base64.encode(signed);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return StringUtils.EMPTY;
    }

验证签名

 /**
     * 功能描述:公钥校验签名
     *
     * @param content   签名原串
     * @param sign      签名串
     * @param publicKey 公钥字符串
     * @return boolean 校验是否成功
     * @date 2020/11/12
     */
    public static boolean doCheck(String content, String sign, String publicKey) {
        try {
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            byte[] encodedKey = Base64.decode(publicKey);
            PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey));
            // 使用 SHA1WithRSA 签名算法
            Signature signature = Signature.getInstance("SHA1WithRSA");
            // 用公钥初始化签名校验
            signature.initVerify(pubKey);
            // 原始串注入签名校验中
            signature.update(content.getBytes());
            // 验证签名结果
            return signature.verify(Base64.decode(sign));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丢了尾巴的猴子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值