密码学 13 数字签名算法

简介:

对目标先进行消息摘要算法,得到的结果再进行RSA加密。

特点:

这种情况下的RSA往往是NoPadding 模式。保证每次的加密结果一致。


代码实现

public static String getSignature(String data) throws Exception {
        PrivateKey privateKey = RSABase64.genPrivatekey();
        Signature signature = Signature.getInstance("SHA256withRSA");
        signature.initSign(privateKey);
        signature.update(data.getBytes(StandardCharsets.UTF_8));
        byte[] res=  signature.sign();
        ByteString of = ByteString.of(res);
        return  of.base64();

    };

    public static boolean verifySignature (String data, String sign) throws Exception {

        PublicKey publicKey = RSABase64.genPublickey();
        Signature signature = Signature.getInstance("SHA256withRSA");
        signature.initVerify(publicKey);
        signature.update(data.getBytes(StandardCharsets.UTF_8));
        return  signature.verify(ByteString.decodeBase64(sign).toByteArray());
    };

你可能感兴趣的