欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > 前端使用rsa对密码加密,springboot使用rsa对密码进行解密

前端使用rsa对密码加密,springboot使用rsa对密码进行解密

2024/10/25 11:32:08 来源:https://blog.csdn.net/m0_73665762/article/details/142825186  浏览:    关键词:前端使用rsa对密码加密,springboot使用rsa对密码进行解密

前端

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JSEncrypt Example</title><script src="https://cdn.rawgit.com/spark/crypto-js/master/crypto-js.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/jsencrypt/3.0.0/jsencrypt.min.js"></script>
</head>
<body><script>const encrypt = new JSEncrypt();//从后端请求获取公钥const publicKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtrtCYsDNujsZxemUPUAga4CQ78QT8ImCXk8kkdDi9brJQAGINg1jiMYeQ4NAb5Ct3YMcZLuqVVvlO51tkj8CNOhR93weRH0HPMG51mrF19MFqZOT3Eqr073DkeeenCfgF/YOOcCPalCYYxdPf2bYIZ9ET6tyd04b+uaIzr0GK0B+NPYyurI1VL1T4inD7t38It5EXVbbrOjtUdZq/zmHYU95ONQo23qY5gY45Esq+N2u3rhLlzAsKq0d+elgKfzn2I9vEaqDbaGxGT9Es7owXClDG94GraRkQFYQil9H5/iVJ9oDqVGhEJlRyXx3yrX8oull8WY1n9nSW7h6UbyAoQIDAQAB'// 设置公钥encrypt.setPublicKey(publicKey);// 定义要加密的数据const password = 'hello world';// 加密数据,加密后的数据为base64编码的字符串,后端需先解码const encryptedPassword = encrypt.encrypt(password);//向后端发起请求await axios({url:"http",data:{password:encryptedPassword}})// 输出加密后的字符串console.log(encryptedPassword); </script></body>

后端

包为

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import java.security.*;
import java.util.Base64;
  private static final KeyPairGenerator keyPairGen;private static final KeyPair keyPair ;private static final PublicKey publicKey ;private static final PrivateKey privateKey ;static {try {keyPairGen = KeyPairGenerator.getInstance("RSA");keyPairGen.initialize(2048);keyPair = keyPairGen.generateKeyPair();publicKey = keyPair.getPublic();privateKey = keyPair.getPrivate();} catch (NoSuchAlgorithmException e) {throw new RuntimeException(e);}}//获取rsa公钥public static String getPublicKey(){return Base64.getEncoder().encodeToString(publicKey.getEncoded());}//对获取的rsa密文解码获取密码public static String decryptRSA(String rawPassword) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {//注意这里一定要指定rsa的加密方式和填充方式为下面的,不然前端加密后的密文解析不了Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");cipher.init(Cipher.DECRYPT_MODE, privateKey);byte[] bytes = cipher.doFinal(Base64.getDecoder().decode(rawPassword));return new String(bytes);}
//获取密码@GetMapping("/test")public String test(@RequestBody res r,@RequestParam("raw")String raw) throws NoSuchPaddingException, IllegalBlockSizeException, NoSuchAlgorithmException, BadPaddingException, InvalidKeyException {return PasswordUtil.decryptRSA(r.getRaw());}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com