使用 RSA 前端加密,后端解密的解决方法

2018-09-25 11:26:45   作者:MangoCool   来源:MangoCool

现在 web 项目中,用户注册登录场景下的表单提交,密码基本都是经过加密的,这种基于安全考虑的做法是很有必要的。

下面就 RSA 的前端加密,后端解密的用法进行简述:

生成 RSA 密钥对:

/**
     * 在会话中放入RSA 公私钥
     * @param model
     */
    private void putKey(Model model) {
        try {
            Map<String, Object> keyMap = RSAUtils.genKeyPair();
            String publicKey = RSAUtils.getPublicKey(keyMap);
            String privateKey = RSAUtils.getPrivateKey(keyMap);
            model.addAttribute("pubKey", publicKey);
            request.getSession().setAttribute("priKey", privateKey);
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }

js 加密:

var pubKey = ;//公钥事先由后台生成后,发回前端;
var encrypt = new JSEncrypt();
encrypt.setPublicKey(pubKey);
var encryptPwd = encrypt.encrypt('your password'); // 放心!每次加密后的串都不相同

主要依赖:jsencrypt.min.js

java 解密:

String priKey = request.getSession().getAttribute("priKey"); // 在session中获取私钥
String decryptPwd = RSAUtils.decrypt(encryptPwd, priKey);
主要依赖:RSAUtils.javaBase64Utils.java

相关资源下载地址:

jsencrypt.min.js

RSAUtils.java

Base64Utils.java

标签: RSA encrypt decrypt java js

分享:

关于我

一个喜欢唱歌,热衷旅行,爱好电子产品的码农。没事,跟三五好友吼上几嗓子,约上几个背着行囊去露营或者宅在家里抱着孩子敲代码。

座右铭:当你的才华还撑不起你的野心的时候,你就应该静下心来学习,永不止步!

            人生之旅历途甚长,所争决不在一年半月,万不可因此着急失望,招精神之萎葸。


Copyright 芒果酷(mangocool.com) All rights reserved. 湘ICP备14019394号

免责声明:本网站部分文章转载其他媒体,意在为公众提供免费服务。如有信息侵犯了您的权益,可与本网站联系,本网站将尽快予以撤除。