import java.security.Key; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; import javax.crypto.Cipher; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class RSAHelper /** * 得到公钥 * @param key 密钥字符串(经过base64编码) * @throws Exception */ public static PublicKey getPublicKey(String key) throws Exception { byte[] keyBytes; keyBytes = (new BASE64Decoder()).decodeBuffer(key); X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PublicKey publicKey = keyFactory.generatePublic(keySpec); return publicKey; } /** * 得到私钥 * @param key 密钥字符串(经过base64编码) * @throws Exception */ public static PrivateKey getPrivateKey(String key) throws Exception { byte[] keyBytes; keyBytes = (new BASE64Decoder()).decodeBuffer(key); PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PrivateKey privateKey = keyFactory.generatePrivate(keySpec); return privateKey; } /** * 得到密钥字符串(经过base64编码) * @return */ public static String getKeyString(Key key) throws Exception { byte[] keyBytes = key.getEncoded(); String s = (new BASE64Encoder()).encode(keyBytes); return s; } public static void main(String[] args) throws Exception { KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA"); //密钥位数 keyPairGen.initialize(1024); //密钥对 KeyPair keyPair = keyPairGen.generateKeyPair(); // 公钥 PublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); // 私钥 PrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate(); String publicKeyString = getKeyString(publicKey); System.out.println("public:n" + publicKeyString); String privateKeyString = getKeyString(privateKey); System.out.println("private:n" + privateKeyString); //加解密类 Cipher cipher = Cipher.getInstance("RSA");//Cipher.getInstance("RSA/ECB/PKCS1Padding"); //明文 byte[] plainText = "我们都很好!邮件:@sina.com".getBytes(); //加密 cipher.init(Cipher.ENCRYPT_MODE, publicKey); byte[] enBytes = cipher.doFinal(plainText); //通过密钥字符串得到密钥 publicKey = getPublicKey(publicKeyString); privateKey = getPrivateKey(privateKeyString); //解密 cipher.init(Cipher.DECRYPT_MODE, privateKey); byte[]deBytes = cipher.doFinal(enBytes); publicKeyString = getKeyString(publicKey); System.out.println("public:n" +publicKeyString); privateKeyString = getKeyString(privateKey); System.out.println("private:n" + privateKeyString); String s = new String(deBytes); System.out.println(s); } 通过modulus public exponent private exponent生成 RSA Key import java.math.BigInteger; import java.security.KeyFactory; import java.security.PrivateKey; import java.security.PublicKey; import java.security.spec.RSAPrivateKeySpec; import java.security.spec.RSAPublicKeySpec; import javax.crypto.Cipher; public class RsaKey { public PublicKey getPublicKey(String modulus,String publicExponent) throws Exception { BigInteger m = new BigInteger(modulus); BigInteger e = new BigInteger(publicExponent); RSAPublicKeySpec keySpec = new RSAPublicKeySpec(m,e); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PublicKey publicKey = keyFactory.generatePublic(keySpec); return publicKey; } public PrivateKey getPrivateKey(String modulus,String privateExponent) throws Exception { BigInteger m = new BigInteger(modulus); BigInteger e = new BigInteger(privateExponent); RSAPrivateKeySpec keySpec = new RSAPrivateKeySpec(m,e); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PrivateKey privateKey = keyFactory.generatePrivate(keySpec); return privateKey; } public static void main(String[] args) throws Exception { String modulus = "10103166745709600780215616551837697832816413714471062522342538060943596036859967333870827790358555455232243383580565187280643159050869924436081447583051139"; String publicExponent = "65537"; String privateExponet = "367979294475011322800474185715497882523349856362702385535371444397399388741997039894583483410120364529325888461124714276674612930833020362278754665756193"; RsaKey key = new RsaKey(); PublicKey publicKey = key.getPublicKey(modulus, publicExponent); PrivateKey privateKey = key.getPrivateKey(modulus, privateExponet); //加解密类 Cipher cipher = Cipher.getInstance("RSA"); //明文 byte[] plainText = "我们都很好!邮件:@sina.com".getBytes(); //加密 cipher.init(Cipher.ENCRYPT_MODE, publicKey); byte[] enBytes = cipher.doFinal(plainText); cipher.init(Cipher.DECRYPT_MODE, privateKey); byte[]deBytes = cipher.doFinal(enBytes); String s = new String(deBytes); System.out.println(s); } }
相关推荐
Java RSA 加密解密 Java RSA 加密解密是指使用 Java 语言实现 RSA 加密和解密算法。RSA 是一种非对称加密算法,由 Ron Rivest、Adi Shamir 和 Leonard Adleman 三人于 1978 年共同发明。RSA 加密算法的安全性基于...
在Java中实现RSA加解密,我们需要使用`java.security`包中的相关类。首先,我们需要生成一对公钥和私钥。这通常通过`KeyPairGenerator`类完成,指定算法为"RSA",然后通过`generateKeyPair()`方法生成包含公钥...
Java RSA 加密解密是一种基于非对称加密算法的安全技术,广泛应用于数据传输、数字签名等领域。RSA(Rivest-Shamir-Adleman)由三位数学家命名,其核心原理是大整数因子分解的困难性。在Java中,我们可以使用Java ...
JavaScript、Java和RSA加密解密是信息安全领域中的关键技术,它们被广泛应用于数据传输、用户认证、Web应用安全等场景。RSA是一种非对称加密算法,以其发明者Ron Rivest、Adi Shamir和Leonard Adleman的名字命名,它...
Java RSA加解密是一种基于非对称加密算法的典型应用,广泛用于网络安全、数据保护等领域。RSA算法由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,因其三位发明者的名字命名。它利用了大整数因子分解的困难...
java rsa 加解密 包含界面,随机生成密钥
Java实现的RSA加密解密算法示例 本文主要介绍了Java实现的RSA加密解密算法,结合实例形式分析了Java RSA加密解密算法的相关实现技巧。 知识点1:RSA加密解密算法简介 RSA加密解密算法是一种非对称加密算法,由Ron...
由于Java的RSA加解密一般都是用RSA/ECB/PKCS1PADDING,导致Python一般的RSA加密库的加解密结果与Java的不兼容,Python下目前能与之兼容的RSA的库目前发现的只有一个,就是m2crypto。 这个库目前的问题是在windows...
Java OpenSSL生成的RSA公私钥进行数据加解密详细介绍 项目: JAVA生成的RSA的密文,通过C++来解密。 RSA这里就不多介绍了大家自己去看。 JAVA也是通过包来实现加密和解密的,那么我的C++是通过OPENSSL的库来实现的...
Java RSA 加密解密程序是一种基于公钥/私钥对的加密算法,广泛应用于网络安全、数据保护和数字签名等领域。RSA是由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出的,是公开密钥加密算法的鼻祖。在这个程序中...
本文将深入探讨Java中的RSA加解密、ZIP加密压缩以及JavaScript中的MD5、SHA1和RSA加密算法。这些技术在网络安全、数据传输、用户认证等多个领域中广泛应用。 首先,我们来看RSA加密算法。RSA是一种非对称加密算法,...
在PHP中,我们可以使用openssl扩展来实现RSA加解密。例如,`openssl_pkey_new()`函数用于生成密钥对,`openssl_public_encrypt()`和`openssl_private_decrypt()`分别用于加密和解密数据。而在Java中,我们可以利用`...
在Java中实现RSA加密解密,需要使用Java Cryptography Extension (JCE)库。以下是使用RSA加密解密的基本步骤: 1. **生成密钥对**:首先,我们需要生成一对公钥和私钥。在Java中,`java.security.KeyPairGenerator`...
Java实现RSA加解密工具类Demo是一个典型的非对称加密技术的应用示例,RSA是一种广泛使用的公开密钥加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出。它基于大数因子分解的困难性,提供了安全的...
在Java中,`java.security`和`javax.crypto`包提供了必要的接口和类来实现RSA加解密。例如,`KeyPairGenerator`用于生成公钥和私钥对,`Cipher`用于进行加解密操作。 在描述中提到的"解决长度限制",这是因为在RSA...
在Java中实现RSA加密解密,可以帮助开发者保护敏感信息,例如在网络传输过程中防止数据被窃取。 首先,了解RSA的工作原理至关重要。它基于两个大素数的乘积,生成一对密钥:公钥和私钥。公钥可以公开,用于加密信息...
使用RSA非对称加密完成Java后端RSA加密和分段加解密,最近研究了RSA非对称加密,关于什么是RSA,网上各种文章一搜一大把,由于RSA的特性,一个1024位的密钥只能加密117位...下面就给出如何完成后端RSA加解密和分段加解密
在Java中实现RSA加解密通常涉及到`java.security`和`javax.crypto`这两个包。 在提供的文件列表中,有两个关键文件:RSAUdf.java和KeyRSA.java。RSAUdf.java可能包含了自定义的用户定义函数(UDF),这些函数用于...
使用rsa进行加密解密。前端使用js和公钥进行加密,后台使用java和私钥进行解密
用JAVA实现RSA的解密和加密的算法。~亲测可以运行