iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >JAVA 如何实现解密RSA算法并使用JS加密
  • 502
分享到

JAVA 如何实现解密RSA算法并使用JS加密

javajs加密rsa算法 2023-05-31 16:05:52 502人浏览 薄情痞子
摘要

JAVA 如何实现解密RSA算法并使用js加密?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。JAVA 中解密RSA算法JS加密实例详解有这样一个需求,前端登录的用户名密码,

JAVA 如何实现解密RSA算法并使用js加密?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

JAVA 中解密RSA算法JS加密实例详解

有这样一个需求,前端登录的用户名密码,密码必需加密,但不可使用MD5,因为后台要检测密码的复杂度,那么在保证安全的前提下将密码传到后台呢,答案就是使用RSA非对称加密算法解决 。

java代码

需要依赖 commons-codec 包

RSACoder.Java

import org.apache.commons.codec.binary.Base64;import javax.crypto.Cipher;import java.security.*;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509EncodedKeySpec;import java.util.HashMap;import java.util.Map;public class RSACoder {  public static final String KEY_ALGoRITHM = "RSA";  public static final String SIGNATURE_ALGORITHM = "MD5withRSA";  private static final String PUBLIC_KEY = "RSAPublicKey";  private static final String PRIVATE_KEY = "RSAPrivateKey";  public static byte[] decryptBASE64(String key) {    return Base64.decodeBase64(key);  }  public static String encryptBASE64(byte[] bytes) {    return Base64.encodeBase64String(bytes);  }    public static String sign(byte[] data, String privateKey) throws Exception {    // 解密由base64编码的私钥    byte[] keyBytes = decryptBASE64(privateKey);    // 构造PKCS8EncodedKeySpec对象    PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);    // KEY_ALGORITHM 指定的加密算法    KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);    // 取私钥匙对象    PrivateKey priKey = keyFactory.generatePrivate(pkcs8KeySpec);    // 用私钥对信息生成数字签名    Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);    signature.initSign(priKey);    signature.update(data);    return encryptBASE64(signature.sign());  }    public static boolean verify(byte[] data, String publicKey, String sign)      throws Exception {    // 解密由base64编码的公钥    byte[] keyBytes = decryptBASE64(publicKey);    // 构造X509EncodedKeySpec对象    X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);    // KEY_ALGORITHM 指定的加密算法    KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);    // 取公钥匙对象    PublicKey pubKey = keyFactory.generatePublic(keySpec);    Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);    signature.initVerify(pubKey);    signature.update(data);    // 验证签名是否正常    return signature.verify(decryptBASE64(sign));  }  public static byte[] decryptByPrivateKey(byte[] data, String key) throws Exception{    // 对密钥解密    byte[] keyBytes = decryptBASE64(key);    // 取得私钥    PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);    KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);    Key privateKey = keyFactory.generatePrivate(pkcs8KeySpec);    // 对数据解密    Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());    cipher.init(Cipher.DECRYPT_MODE, privateKey);    return cipher.doFinal(data);  }    public static byte[] decryptByPrivateKey(String data, String key)      throws Exception {    return decryptByPrivateKey(decryptBASE64(data),key);  }    public static byte[] decryptByPublicKey(byte[] data, String key)      throws Exception {    // 对密钥解密    byte[] keyBytes = decryptBASE64(key);    // 取得公钥    X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);    KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);    Key publicKey = keyFactory.generatePublic(x509KeySpec);    // 对数据解密    Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());    cipher.init(Cipher.DECRYPT_MODE, publicKey);    return cipher.doFinal(data);  }    public static byte[] encryptByPublicKey(String data, String key)      throws Exception {    // 对公钥解密    byte[] keyBytes = decryptBASE64(key);    // 取得公钥    X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);    KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);    Key publicKey = keyFactory.generatePublic(x509KeySpec);    // 对数据加密    Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());    cipher.init(Cipher.ENCRYPT_MODE, publicKey);    return cipher.doFinal(data.getBytes());  }    public static byte[] encryptByPrivateKey(byte[] data, String key)      throws Exception {    // 对密钥解密    byte[] keyBytes = decryptBASE64(key);    // 取得私钥    PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);    KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);    Key privateKey = keyFactory.generatePrivate(pkcs8KeySpec);    // 对数据加密    Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());    cipher.init(Cipher.ENCRYPT_MODE, privateKey);    return cipher.doFinal(data);  }    public static String getPrivateKey(Map<String, Key> keyMap)      throws Exception {    Key key = (Key) keyMap.get(PRIVATE_KEY);    return encryptBASE64(key.getEncoded());  }    public static String getPublicKey(Map<String, Key> keyMap)      throws Exception {    Key key = keyMap.get(PUBLIC_KEY);    return encryptBASE64(key.getEncoded());  }    public static Map<String, Key> iniTKEy() throws Exception {    KeyPairGenerator keyPairGen = KeyPairGenerator        .getInstance(KEY_ALGORITHM);    keyPairGen.initialize(1024);    KeyPair keyPair = keyPairGen.generateKeyPair();    Map<String, Key> keyMap = new HashMap(2);    keyMap.put(PUBLIC_KEY, keyPair.getPublic());// 公钥    keyMap.put(PRIVATE_KEY, keyPair.getPrivate());// 私钥    return keyMap;  }}

--结束END--

本文标题: JAVA 如何实现解密RSA算法并使用JS加密

本文链接: https://www.lsjlt.com/news/226962.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JAVA 如何实现解密RSA算法并使用JS加密
    JAVA 如何实现解密RSA算法并使用JS加密?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。JAVA 中解密RSA算法JS加密实例详解有这样一个需求,前端登录的用户名密码,...
    99+
    2023-05-31
    java js加密 rsa算法
  • 如何使用Java实现RSA非对称加密算法
    这篇文章主要介绍如何使用Java实现RSA非对称加密算法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、非对称加密非对称加密算法是一种密钥的保密方法。非对称加密算法需要两个密钥:公开密钥(publickey:简称公...
    99+
    2023-06-15
  • 如何使用RSA算法实现数据加密
    使用RSA算法对数据进行加密的方法具体方法如下:#ifndef ENCRYPT_H#define ENCRYPT_Htypedef unsigned long Huge; typedef struct RsaPubKey_{Huge e;H...
    99+
    2024-04-02
  • 如何理解加密算法RSA
    本篇内容介绍了“如何理解加密算法RSA”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!RSA加密我们需要先预...
    99+
    2024-04-02
  • 如何在java中使用RSA算法对密码进行加密与解密
    本篇文章给大家分享的是有关如何在java中使用RSA算法对密码进行加密与解密,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言:  RSA是第一个比较完善的公开密钥算...
    99+
    2023-05-31
    java rsa算法 ava
  • RSA加密算法如何在java项目中实现
    这篇文章将为大家详细讲解有关RSA加密算法如何在java项目中实现,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、什么是非对称加密加密的密钥与加密的密钥不相同,这样的加密算法称之为非对称加...
    99+
    2023-05-31
    java rsa加密 ava
  • Java 实现RSA非对称加密算法
    目录  公钥与私钥  Java实现  公钥与私钥   公钥与私钥是成对的,一般的,我们认为的是公钥加密、私钥解密、私钥签名、公钥验证,有人说成私钥加密,公钥解密时不对的。   公钥与...
    99+
    2024-04-02
  • Java RSA加解密算法学习
    一、前言 1.1 问题思考 为什么需要加密 / 解密?信息泄露可能造成什么影响? 二、 基础回顾 2.1 加密技术 加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目...
    99+
    2023-10-27
    java 算法 学习 RSA 非对称加密
  • 详解RSA加密算法的原理与Java实现
    目录对称加密和非对称加密RSA加密是什么RSA的加密过程前几天阿粉刚刚说了这个 MD5 加密的前世今生,因为 MD5 也确实用的人不是很多了,阿粉就不再继续的一一赘述了,今天阿粉想给...
    99+
    2022-11-13
    Java RSA加密算法 Java RSA加密 Java RSA
  • 如何在Java中使用RSA加密对密码进行加密解密
    这期内容当中小编将会给大家带来有关如何在Java中使用RSA加密对密码进行加密解密,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体如下:public static void ...
    99+
    2023-05-31
    java rsa加密 ava
  • 教你用Java实现RSA非对称加密算法
    目录一、非对称加密二、RSA算法三、RSA算法Java语言实现一、非对称加密 非对称加密算法是一种密钥的保密方法。 非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥...
    99+
    2024-04-02
  • Go语言 如何实现RSA加密解密
    RSA是一种非对称加密算法,它的名字是由它的三位开发者,即RonRivest、AdiShamir和LeonardAdleman 的姓氏的首字母组成的(Rivest-Shamir-Ad...
    99+
    2024-04-02
  • C++实现RSA加密解密算法是示例代码
    目录一、什么是RSA算法1.对称加密2.非对称加密3.非对称加密的应用二、RSA算法的基础操作步骤1.生成公钥和私钥2.用公钥加密信息 3.用私钥解密信息三、AC代码四、R...
    99+
    2024-04-02
  • vue前端RSA加密java后端解密如何实现
    这篇文章主要介绍“vue前端RSA加密java后端解密如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue前端RSA加密java后端解密如何实现”文章能帮助大家解决问题。一、前言最近安全测试...
    99+
    2023-07-05
  • RSA如何实现C# 加密
    RSA如何实现C# 加密,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。RSA实现C# 加密首先我们来了解下什么是RSA ,它属于不对称加密,其原理就是使用一个公...
    99+
    2023-06-17
  • Thinkphp 6 使用RSA非对称加密算法 对接口加密解密
    后台接口中 经常使用到加密算法 如何使用RSA 非对称加密 对数据进行加密传输 下载RSA 加密算法 php-Rsa算法下载 将下载好的RSA 算法 放入 到 TP6项目根目录下 exten...
    99+
    2023-09-17
    php 算法
  • java怎么实现rsa加密解密文件
    要在Java中实现RSA加密和解密文件,可以使用Java Cryptography Architecture(JCA)提供的RSA算...
    99+
    2023-10-26
    java
  • 利用Python实现RSA加密解密方法实例
    目录前言一、安装模块二、生成密钥对三、加密四、解密五、完整代码总结前言 加密技术在数据安全存储,数据传输中发挥着重要作用,能够保护用户隐私数据安全,防止信息窃取。RSA是一种非对称加...
    99+
    2024-04-02
  • c# 实现RSA非对称加密算法
    目录  公钥与私钥  C#实现  公钥与私钥   公钥与私钥是成对的,一般的,我们认为的是公钥加密、私钥解密、私钥签名、公钥验证,有人说成私钥加密,公钥解密时不对的。   公钥与私钥...
    99+
    2024-04-02
  • 如何使用 RSA 私钥解密加密消息
    php小编柚子为您介绍如何使用RSA私钥解密加密消息。RSA是一种非对称加密算法,通过生成公钥和私钥对信息进行加密和解密。在使用RSA解密加密消息时,您需要拥有相应的私钥,并使用该私钥...
    99+
    2024-02-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作