01-SRA加密验签说明

一简介

实际工作中经常遇到与第三方进行数据交互的场景,这个时候,处于安全的考虑,通常会对数据进行加密,RSA+BASE64是常见的加密验签的算法组合。所谓RSA就是一种非对称的加密算法,他会生成一组秘钥公钥私钥

  • 公钥 公钥负责加密和验签的工作。公钥是给对方使用的,对方用我方的公钥 对我方传输到对方的数据 进行验签,我方利用对方的公钥,对我方传输到对方的数据进行加密。
  • 私钥 私钥负责解密和加签工作。私钥是给自己用的,己方利用私钥 对我方传递到对方的数据进行加签,对对方传递到我方的数据进行解密。
    一般加签的时候会先数据利用RSA算法进行签名,生成签名之后,在对签名进行BASE64编码,然后再转为String 这才是最终的签名字符串。验签的时候需要先将数据解密,然后在加签,最后BASE64转为字符串,再比较两个签名字符串师傅相同。
二依赖

需要如下依赖

<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.10</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.73</version>
        </dependency>
三 示例
public class RSADemo {
   

    /**
     * RSA最大加密明文大小
     */
    private static final int MAX_ENCRYPT_BLOCK = 117;
    /**
     * RSA最大解密密文大小
     */
    private static final int MAX_DECRYPT_BLOCK = 128;

    /**
     * 获取秘钥对
     * @return
     * @throws Exception
     */
    public static KeyPair getKeyPair() throws Exception {
   
        KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
        generator.initialize(1024);
        return generator.generateKeyPair();
    }

    /**
     * 获取私钥
     * @param privateKey
     * @return
     * @throws Exception
     */
    public static PrivateKey getPrivateKey(String privateKey) throws Exception {
   
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        byte[] decodedKey = Base64.decodeBase64(privateKey.getBytes()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值