• java RSA 解密


    import org.apache.commons.codec.binary.Base64;
    
    import javax.crypto.Cipher;
    import java.security.*;
    import java.security.interfaces.RSAPrivateKey;
    import java.security.interfaces.RSAPublicKey;
    import java.security.spec.PKCS8EncodedKeySpec;
    import java.security.spec.X509EncodedKeySpec;
    
    /**
     * @from fhadmin.cn
     * @description Rsa 工具类,公钥私钥生成,加解密
     * @date 2020-05-18
     **/
    public class RsaUtils {
    
        private static final String SRC = "123456";
    
        public static void main(String[] args) throws Exception {
            System.out.println("
    ");
            RsaKeyPair keyPair = generateKeyPair();
            System.out.println("公钥:" + keyPair.getPublicKey());
            System.out.println("私钥:" + keyPair.getPrivateKey());
            System.out.println("
    ");
            test1(keyPair);
            System.out.println("
    ");
            test2(keyPair);
            System.out.println("
    ");
        }
    
        /**
         * 公钥加密私钥解密
         */
        private static void test1(RsaKeyPair keyPair) throws Exception {
            System.out.println("***************** 公钥加密私钥解密开始 *****************");
            String text1 = encryptByPublicKey(keyPair.getPublicKey(), RsaUtils.SRC);
            String text2 = decryptByPrivateKey(keyPair.getPrivateKey(), text1);
            System.out.println("加密前:" + RsaUtils.SRC);
            System.out.println("加密后:" + text1);
            System.out.println("解密后:" + text2);
            if (RsaUtils.SRC.equals(text2)) {
                System.out.println("解密字符串和原始字符串一致,解密成功");
            } else {
                System.out.println("解密字符串和原始字符串不一致,解密失败");
            }
            System.out.println("***************** 公钥加密私钥解密结束 *****************");
        }
    
        /**
         * 私钥加密公钥解密
         * @throws Exception /
         */
        private static void test2(RsaKeyPair keyPair) throws Exception {
            System.out.println("***************** 私钥加密公钥解密开始 *****************");
            String text1 = encryptByPrivateKey(keyPair.getPrivateKey(), RsaUtils.SRC);
            String text2 = decryptByPublicKey(keyPair.getPublicKey(), text1);
            System.out.println("加密前:" + RsaUtils.SRC);
            System.out.println("加密后:" + text1);
            System.out.println("解密后:" + text2);
            if (RsaUtils.SRC.equals(text2)) {
                System.out.println("解密字符串和原始字符串一致,解密成功");
            } else {
                System.out.println("解密字符串和原始字符串不一致,解密失败");
            }
            System.out.println("***************** 私钥加密公钥解密结束 *****************");
        }
    
        /**
         * 公钥解密
         * @from fhadmin.cn
         * @param publicKeyText 公钥
         * @param text 待解密的信息
         * @return /
         * @throws Exception /
         */
        public static String decryptByPublicKey(String publicKeyText, String text) throws Exception {
            X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(Base64.decodeBase64(publicKeyText));
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
            Cipher cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.DECRYPT_MODE, publicKey);
            byte[] result = cipher.doFinal(Base64.decodeBase64(text));
            return new String(result);
        }
    
        /**
         * 私钥加密
         * @from fhadmin.cn
         * @param privateKeyText 私钥
         * @param text 待加密的信息
         * @return /
         * @throws Exception /
         */
        public static String encryptByPrivateKey(String privateKeyText, String text) throws Exception {
            PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKeyText));
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
            Cipher cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.ENCRYPT_MODE, privateKey);
            byte[] result = cipher.doFinal(text.getBytes());
            return Base64.encodeBase64String(result);
        }
    
        /**
         * 私钥解密
         * @from fhadmin.cn
         * @param privateKeyText 私钥
         * @param text 待解密的文本
         * @return /
         * @throws Exception /
         */
        public static String decryptByPrivateKey(String privateKeyText, String text) throws Exception {
            PKCS8EncodedKeySpec pkcs8EncodedKeySpec5 = new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKeyText));
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec5);
            Cipher cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.DECRYPT_MODE, privateKey);
            byte[] result = cipher.doFinal(Base64.decodeBase64(text));
            return new String(result);
        }
    
        /**
         * 公钥加密
         * @from fhadmin.cn
         * @param publicKeyText 公钥
         * @param text 待加密的文本
         * @return /
         */
        public static String encryptByPublicKey(String publicKeyText, String text) throws Exception {
            X509EncodedKeySpec x509EncodedKeySpec2 = new X509EncodedKeySpec(Base64.decodeBase64(publicKeyText));
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec2);
            Cipher cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.ENCRYPT_MODE, publicKey);
            byte[] result = cipher.doFinal(text.getBytes());
            return Base64.encodeBase64String(result);
        }
    
        /**
         * 构建RSA密钥对
         * @from fhadmin.cn
         * @return /
         * @throws NoSuchAlgorithmException /
         */
        public static RsaKeyPair generateKeyPair() throws NoSuchAlgorithmException {
            KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
            keyPairGenerator.initialize(1024);
            KeyPair keyPair = keyPairGenerator.generateKeyPair();
            RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();
            RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate();
            String publicKeyString = Base64.encodeBase64String(rsaPublicKey.getEncoded());
            String privateKeyString = Base64.encodeBase64String(rsaPrivateKey.getEncoded());
            return new RsaKeyPair(publicKeyString, privateKeyString);
        }
    
    
        /**
         * RSA密钥对对象
         */
        public static class RsaKeyPair {
    
            private final String publicKey;
            private final String privateKey;
    
            public RsaKeyPair(String publicKey, String privateKey) {
                this.publicKey = publicKey;
                this.privateKey = privateKey;
            }
    
            public String getPublicKey() {
                return publicKey;
            }
    
            public String getPrivateKey() {
                return privateKey;
            }
    
        }
    }
     

    --------------------www.fhadmin.cn----------------------------------------------自定义表单
    28. 定义模版:拖拽左侧表单元素到右侧区域,编辑表单元素,保存表单模版
    29. 表单模版:编辑维护表单模版,复制表单模版,修改模版类型,预览表单模版
    30. 我的表单:选择表单模版,编辑表单规则,是否上传图片、附件、开启富文本、挂靠流程开关等
    31. 表单数据:从我的表单进去可增删改查表单数据,修改表单规则
    32. 挂靠记录:记录表单数据和流程实例ID关联记录,可删除

  • 相关阅读:
    171. Excel Sheet Column Number (Easy)
    349. Intersection of Two Arrays (Easy)
    453. Minimum Moves to Equal Array Elements (Easy)
    657. Judge Route Circle (Easy)
    CSS笔记
    保存页面状态
    UI开发总结
    ubuntu 下配置munin
    反向代理配置
    JavaScript 高级程序设计第二版
  • 原文地址:https://www.cnblogs.com/teacher11/p/15250967.html
Copyright © 2020-2023  润新知