• 前端js jsencrypt加密,后端解密


    前端引入jsencrypt.min.js
    链接:https://blog.csdn.net/CYY941027/article/details/136248779

        var encrypt = new JSEncrypt();
        encrypt.setPublicKey(key);//key为公钥,根据下一步操作生成公钥私钥,公钥放入前端加密使用
        var passwordrsa = encrypt.encrypt(password);
    
    • 1
    • 2
    • 3

    生成公钥私钥方法

    public static void test() throws Exception {
        // 1.初始化秘钥
        KeyPairGenerator keyPairGenerator;
        try {
            keyPairGenerator = KeyPairGenerator.getInstance("RSA");
            // 随机数生成器
            SecureRandom sr = new SecureRandom();
            // 设置1024位长的秘钥
            keyPairGenerator.initialize(1024, sr);
            // 开始创建
            KeyPair keyPair = keyPairGenerator.generateKeyPair();
            //获取公钥
            RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();
            //获取私钥
            RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate();
            //对公钥进行编码
            String PUBLIC_KEY = Base64.encodeBase64String(rsaPublicKey.getEncoded());
            System.out.println("公钥=" + PUBLIC_KEY);
            //对私钥进行编码
            String PRIVATE_KEY = Base64.encodeBase64String(rsaPrivateKey.getEncoded());
            System.out.println("私钥=" + PRIVATE_KEY);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    后端解密

    /**
     * RSA加密解密
     *
     * @author ruoyi
     **/
    public class RsaUtils {
        // Rsa 私钥
        public static String privateKey = "hQ+cPkoxt6y5NI9kVRtSLUyHpAXsBsw6cwbjveKDGdpv4CRbaulErzbgFkuqckToQyvybY83osdbD1KyMpIVWlvDOKrbtNBtbLQqv+7vBtKp6KJZ1HYwF1";
    
    	  /*
    	  *解密前端参数
    	  */
        public static void main(String[] args) throws Exception {
            String jm = decryptByPrivateKey(passwordrsa );
        }
    
    
        /**
         * 私钥解密
         *
         * @param text 私钥
         * @param text 待解密的文本
         * @return 解密后的文本
         */
        public static String decryptByPrivateKey(String text) throws Exception {
            return decryptByPrivateKey(privateKey, text);
        }
    
        /**
         * 公钥解密
         *
         * @param publicKeyString 公钥
         * @param text            待解密的信息
         * @return 解密后的文本
         */
        public static String decryptByPublicKey(String publicKeyString, String text) throws Exception {
            X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(Base64.decodeBase64(publicKeyString));
            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);
        }
    
        /**
         * 私钥加密
         *
         * @param privateKeyString 私钥
         * @param text             待加密的信息
         * @return 加密后的文本
         */
        public static String encryptByPrivateKey(String privateKeyString, String text) throws Exception {
            PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKeyString));
            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);
        }
    
        /**
         * 私钥解密
         *
         * @param privateKeyString 私钥
         * @param text             待解密的文本
         * @return 解密后的文本
         */
        public static String decryptByPrivateKey(String privateKeyString, String text) throws Exception {
            PKCS8EncodedKeySpec pkcs8EncodedKeySpec5 = new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKeyString));
            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);
        }
    
        /**
         * 公钥加密
         *
         * @param publicKeyString 公钥
         * @param text            待加密的文本
         * @return 加密后的文本
         */
        public static String encryptByPublicKey(String publicKeyString, String text) throws Exception {
            X509EncodedKeySpec x509EncodedKeySpec2 = new X509EncodedKeySpec(Base64.decodeBase64(publicKeyString));
            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密钥对
         *
         * @return 生成后的公私钥信息
         */
        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;
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
  • 相关阅读:
    零基础html学习/刷题-第一期
    openGauss数据库的安装部署
    初学vue,想自己找个中长期小型项目练练手,应该做什么?
    分库分表必会-跨库分页查询看此一篇就够了
    智能终端信息安全概念(九):内核安全(1)概念
    备战金九银十,两份JAVA面试题2022最新整合版,祝你脱颖而出
    【openstack】cloudkitty组件,入门级安装(快速)
    Java-IO流学习
    代码随想录算法训练营刷题复习9 :二叉树复习之二叉树的遍历+求二叉树的属性(未完)
    ZooKeeper基本知识
  • 原文地址:https://blog.csdn.net/CYY941027/article/details/136248599