JDK中JCA的简单使用(二)---RSA加签验签

本文介绍了Java中JCA(Java Cryptography Architecture)的Signature类如何用于RSA加签和验签。Signature类提供了数字签名算法,通过私钥创建签名,公钥验证数据真实性。这种机制不用于数据加密,而是确保数据的完整性和来源可靠性。加签和验签的步骤包括创建Key对、使用私钥加签和公钥验签。文章提供了完整的Java代码示例,并给出了应用场景。
摘要由CSDN通过智能技术生成

请注意这里是加签验签,如有加密解密需求的,还请移步

JDK中JCA的简单使用(三)---RSA加密解密

Signature 类

Signature类是一个引擎类,提供加密的数字签名算法,例如DSA或RSAwithMD5。加密安全签名算法采用任意大小的输入和私钥,并生成一个相对较短(通常是固定大小)的字节串——签名。

  • 只有私钥/公钥对的所有者才能创建签名。对于拥有公钥的任何人来说,恢复私钥在计算上是不可行的。
  • 用于生成签名的私钥相对应的公钥,可以验证输入的真实性和完整性。
  • 签名和公钥不会泄露有关私钥的任何信息。

简而言之,
1.创建一对Key:私钥&公钥。
2.使用私钥创建签名
3.使用公钥对数据的真实性进行校验。

值得注意的是,Signature算法目的并不在于对原数据加密,而是使用原数据和私钥/公钥生成签名,验签时,使用公钥/私钥,签名,原数据进行校验。

应用场景:用于需要使用这份数据,又不能确定接收数据的可靠性。

使用流程:

1.获取公私钥对,代码如下:

     /**
     * 获取公私钥对
     *
     * @return
     */
    private static Map<String, String> getKeyPair() throws NoSuchAlgorithmException {
        KeyPairGenerator generator = null;
        generator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
        //初始化秘钥size,最小为512
        generator.initialize(1024);
        KeyPair keyPair = generator.generateKeyPair();
        String privateKey = Base64.getEncoder().encodeToString(keyPair.getPrivate().getEncoded());
        String publicKey = Base64.getEncoder().encodeToString(keyPair.getPublic().getEncoded());
        Map<String, String> keyMap = new HashMap<>();
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值