利用SHA-1算法和RSA秘钥进行签名验签(带注释)

 阅读目录:

import javax.crypto.Cipher; import java.io.*; import java.security.*; import java.util.Base64;  /**  * @author: mmzsit  * @date:   2018年10月24日  * @Description:  * 博客地址:https://blog.mmzsblog.cn  * @version V1.0  */public class EncryptUtil {      public static void main(String[] args) {         ObjectInputStream inputStream = null;          //参数字符串        String userName="测试test0->1";         String orderId="测试ID123456";         String price="666";         //构建用于签名和传输的字符串        StringBuffer bufferStr =new StringBuffer();         bufferStr.append("userName=").append(userName)                 .append("&orderId=").append(orderId)                 .append("&price=").append(price);         //将构建的字符串转化为String类型        String localStr =bufferStr.toString();          //签名算法加密        try {             //随机生成秘钥对             // 检查是否存在这对密钥,否则生成这些密钥            if (!areKeysPresent()) {                 // 使用RSA算法生成一对密钥,并存储在指定路径的指定文件中                generateKey();             }              //服务端数字签名开始             //第一步:用SHA-1算出原文的摘要            byte[] shaDigest = shaEncrypt(localStr);             System.out.println("原文本内容:\n"+localStr);             String shaStr = new String(shaDigest,"UTF-8");             System.out.println("原文本内容SHA-1算法后:\n"+shaStr);              //第二步:使用私钥对原文进行加密             //读取文件中的私钥            inputStream = new ObjectInputStream(new FileInputStream(PRIVATE_KEY_FILE));             final PrivateKey privateKey = (PrivateKey) inputStream.readObject();             //使用私钥加密            byte[] rsaBytes = rsaEncrypt(shaDigest,privateKey);              //第三步:对密文进行BASE64编码            byte[] base64Str = Base64.getEncoder().encode(rsaBytes);             String base64enCode=new String(base64Str,"UTF-8");             System.out.println("加密后的内容:\n"+base64enCode);              //签名加密完成数据传输到客户端              //客户端验证签名开始             //获取原文            String receiveStr=localStr;             //第一步:使用Base64解码密文            byte[] bese64Decoded =Base64.getDecoder().decode(base64enCode.getBytes("UTF-8"));              //第二步:使用公钥对密文进行解码             
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信