zoukankan      html  css  js  c++  java
  • 经典数字签名算法---RSA

    RSA数字签名算法主要可以分为MD系列和SHA系列两大类。

    MD系列:MD2withRSA、MD5withRSA。

    SHA系列:SHA1withRSA、SHA224withRSA、SHA256withRSA、SHA384withRSA、SHA512withRSA。

    package com.antfin.jdk8.sign;
    
    import java.security.*;
    
    public class SHA256withRSA {
    
        private static final String KEY_ALGORITHM = "RSA";
        private static final String SIGN_ALGORITHM = "SHA256withRSA";
        private static final String ENCODING = "UTF-8";
        private static final int KEY_SIZE = 2048;
    
        public static void main(String[] args) throws Exception {
            String data = "待签名的数据";
            KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
            keyPairGenerator.initialize(KEY_SIZE);
            KeyPair keyPair = keyPairGenerator.generateKeyPair();
            PublicKey publicKey = keyPair.getPublic();
            PrivateKey privateKey = keyPair.getPrivate();
    
            Signature signature = Signature.getInstance(SIGN_ALGORITHM);
            signature.initSign(privateKey);
            signature.update(data.getBytes(ENCODING));
            byte[] bytesSign = signature.sign(); //签名
    
            signature.initVerify(publicKey);
            signature.update(data.getBytes(ENCODING));
            boolean flag = signature.verify(bytesSign); //验签
            System.out.println("flag: "+flag);
        }
    }
    

      

  • 相关阅读:
    四则运算
    Git工具学习整理
    java拦截器中使用的动态代理
    Java动态代理
    Git常用命令
    Maven学习
    ruby调用jenkins API使用
    c#认证考试第四章(国庆作业及其总结)
    C#认证考试第三章
    c#认证考试练习题目
  • 原文地址:https://www.cnblogs.com/i-hard-working/p/10441201.html
Copyright © 2011-2022 走看看