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("\n"); RsaKeyPair keyPair = generateKeyPair(); System.out.println("公钥:" + keyPair.getPublicKey()); System.out.println("私钥:" + keyPair.getPrivateKey()); System.out.println("\n"); test1(keyPair); System.out.println("\n"); test2(keyPair); System.out.println("\n"); } /** * 公钥加密私钥解密 */ 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; } } }
相关推荐
Java RSA2048加密解密技术是一种广泛应用于网络通信中的安全机制,它结合了非对称加密算法RSA和2048位的密钥长度,以提供强大的数据保护。在给定的“java_RSA2048加密解密.zip”压缩包中,包含了前后端实现RSA2048...
Java RSA 加密解密是一种基于非对称加密算法的安全技术,广泛应用于数据保护、网络安全以及数字签名等领域。RSA(Rivest-Shamir-Adleman)由三位数学家命名,其核心在于两个大素数的乘积可以很容易计算出来,但将其...
本文将详细介绍一个实际案例:如何在前端使用JavaScript库`jsencrypt`进行RSA加密,并在后端使用Java进行解密。这个功能实现的核心知识点包括RSA算法、`jsencrypt`库的使用以及前后端的交互。 首先,RSA是一种非...
经过本人修改,简化并完善了别人的代码,使其更加的容易理解和学习! 此为一个完整的项目,...功能:服务端随机生成密钥,JS用公钥加密,服务端用私钥解密。用到的JS加密文件是从官网下载的最新版,速度快,稳定性好!
Java OpenSSL生成的RSA公私钥进行数据加解密详细介绍 项目: JAVA生成的RSA的密文,通过C++来解密。 RSA这里就不多介绍了大家自己去看。 JAVA也是通过包来实现加密和解密的,那么我的C++是通过OPENSSL的库来实现的...
由于Java的RSA加解密一般都是用RSA/ECB/PKCS1PADDING,导致Python一般的RSA加密库的加解密结果与Java的不兼容,Python下目前能与之兼容的RSA的库目前发现的只有一个,就是m2crypto。 这个库目前的问题是在windows...
3. 解密过程:Java使用RSA私钥或DES密钥加密数据,C#接收并解密。 在实现过程中,还需要注意以下几点: - 对于RSA,确保使用相同的模数和指数进行公钥和私钥的生成。 - 对于DES,由于其密钥长度固定,需要确保在两...
在Java中实现RSA加密解密,需要使用Java Cryptography Extension (JCE)库。以下是使用RSA加密解密的基本步骤: 1. **生成密钥对**:首先,我们需要生成一对公钥和私钥。在Java中,`java.security.KeyPairGenerator`...
使用RSA非对称加密完成Java后端RSA加密和分段加解密,最近研究了RSA非对称加密,关于什么是RSA,网上各种文章一搜一大把,由于RSA的特性,一个1024位的密钥只能加密117位字节数据,当数据量超过117位字节的时候,程序...
/** * 加密 * @param key 加密的密钥 * @param data 待加密的明文数据 * @return 加密后的数据 * @throws EncryptException */
"C# RSA加密与JAVA解密,实现相互通信"的主题聚焦于如何利用RSA公钥/私钥加密算法在C#和Java两个不同的编程环境中实现安全的数据交换。RSA是一种非对称加密算法,它使用一对密钥——公钥和私钥,公钥用于加密,私钥...
Java RSA 加密解密 Java RSA 加密解密是指使用 Java 语言实现 RSA 加密和解密算法。RSA 是一种非对称加密算法,由 Ron Rivest、Adi Shamir 和 Leonard Adleman 三人于 1978 年共同发明。RSA 加密算法的安全性基于...
本项目"PHP_JAVA_RSA互通加解密"实现了PHP和Java之间使用RSA算法进行数据的加解密操作,确保了跨平台、跨语言的数据安全通信。 首先,RSA(Rivest-Shamir-Adleman)加密算法基于数论中的大数因子分解问题,它的核心...
2. **Java RSA解密**:后端接收到加密后的数据后,使用私钥进行解密。在Java中,可以使用`java.security`包下的类,如`KeyPairGenerator`、`PublicKey`、`PrivateKey`、`Cipher`等,来生成密钥对和进行解密操作。...
Java RSA 加密解密是一种基于非对称加密算法的安全技术,广泛应用于数据传输、数字签名等领域。RSA(Rivest-Shamir-Adleman)由三位数学家命名,其核心原理是大整数因子分解的困难性。在Java中,我们可以使用Java ...
Java实现的RSA加密解密算法示例 本文主要介绍了Java实现的RSA加密解密算法,结合实例形式分析了Java RSA加密解密算法的相关实现技巧。 知识点1:RSA加密解密算法简介 RSA加密解密算法是一种非对称加密算法,由Ron...
java go RSA互相加解密 go rsa加密后可以用 java解密, java rsa加密后 可以用解密, 要把 txt文件中的秘钥和私钥 都复制粘贴到java 文件和go 文件 ,公钥和私钥统一才可以
JAVA RSA 加密算法 RSA.java RSA公钥加解密,RSA私钥加解密,MD5withRSA 签名 MD5withRSA签名较验
java rsa 加解密 包含界面,随机生成密钥
本文将深入探讨Java中的RSA加解密、ZIP加密压缩以及JavaScript中的MD5、SHA1和RSA加密算法。这些技术在网络安全、数据传输、用户认证等多个领域中广泛应用。 首先,我们来看RSA加密算法。RSA是一种非对称加密算法,...