简介:

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

特点:

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

算法秘钥长度秘钥长度默认值签名长度备注
MD2withRSA512~65535位(秘钥长度必须是64的倍数)1024与秘钥长度相同java6实现
MD5withRSA同上同上与秘钥长度相同同上
SHA1withRSA同上同上与秘钥长度相同同上
SHA224withRSA同上2048与秘钥长度相同Bouncy Castle实现
SHA256withRSA同上同上与秘钥长度相同同上
SHA384withRSA同上同上与秘钥长度相同同上
SHA512withRSA同上同上与秘钥长度相同同上
RIPEMD128withRSA同上同上与秘钥长度相同同上
RIPEMD160withRSA同上同上与秘钥长度相同同上

代码实现

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());
    };

永乐
23 声望7 粉丝

目前文章属于笔记类型,暂未整理。 后期会系统化整理。


引用和评论

0 条评论