`
zcw_java
  • 浏览: 303777 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JAVA实现RSA加密过程

    博客分类:
  • Java
 
阅读更多
用JAVA实现RSA加密过程,有以下几个步骤:
    1、甲方构建密钥对(公钥和私钥,公钥给对方,私钥留给自己)
    2、甲方使用私钥加密数据,然后用私钥对加密后的数据签名,并把这些发送给乙方;乙方使用公钥、签名来验证待解密数据是否有效,如果有效使用公钥对数据解密。
    3、乙方使用公钥加密数据,向甲方发送经过加密后的数据;甲方获得加密数据,通过私钥解密。


package com.rsa.core;

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 RSACoder {

	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;
	}

	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 = "91686280721609".getBytes();
		//加密
		cipher.init(Cipher.ENCRYPT_MODE, publicKey);
		byte[] enBytes = cipher.doFinal(plainText);
		String s1 = new String(enBytes);
		System.out.println("加密后的密文:" + s1);
		//通过密钥字符串得到密钥
		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);
	}

}
分享到:
评论

相关推荐

    C# .net 使用Java公钥实现RSA加密

    C# .net 使用Java公钥实现RSA加密

    JAVA实现RSA加密解密

    在Java中实现RSA加密解密,可以帮助开发者保护敏感信息,例如在网络传输过程中防止数据被窃取。 首先,了解RSA的工作原理至关重要。它基于两个大素数的乘积,生成一对密钥:公钥和私钥。公钥可以公开,用于加密信息...

    Java实现文件的RSA和DES加密

    Java 实现文件的 RSA 和 DES 加密 在现代密码技术中,根据密钥类型的不同,可以将其分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。对称加密算法用来对敏感数据等信息进行加密,常用的...

    Java实现的RSA加密解密算法示例

    Java实现的RSA加密解密算法示例 本文主要介绍了Java实现的RSA加密解密算法,结合实例形式分析了Java RSA加密解密算法的相关实现技巧。 知识点1:RSA加密解密算法简介 RSA加密解密算法是一种非对称加密算法,由Ron...

    用java实现RSA加密

    本文件主要介绍了如何使用Java实现RSA加密的基本过程,包括密钥的生成、数据的加密与解密以及数字签名的生成与验证。通过这些步骤,可以确保数据的安全传输,并且能够验证数据的完整性及发送者的身份。在实际应用中...

    Java RSA加密前后端实现

    在这个项目"Java RSA加密前后端实现"中,前端部分可能使用JavaScript实现了RSA加密。JavaScript作为客户端语言,可以方便地在用户浏览器中运行,对用户的密码或其他敏感信息进行加密,然后将加密后的数据发送到...

    Android,java实现RSA加密

    RSA加密算法,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。...加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开...本资源是通过Android、java实现的RSA加密的例子,可供大家参考学习。

    java js RSA加密支持超长加密

    在Java和JavaScript中实现RSA加密,对于处理较长的数据至关重要,因为这两种语言的标准库默认的RSA加密只能处理相对较小的块。这里我们将深入探讨如何在Java和JavaScript中实现超长数据的RSA加密,并解决跨平台兼容...

    java实现RSA加密

    根据提供的文件描述,我们可以将Java实现RSA加密的过程分为三个主要步骤: 1. **构建密钥对**:甲方生成一对密钥——公钥和私钥,并将公钥公开给乙方,而私钥则需妥善保管。 2. **数据加密与签名**:甲方使用私钥对...

    用Java语言实现RSA加密算法

    根据给定的信息,本文将详细解释如何在Java中实现RSA加密算法,并且解析代码中的关键概念与步骤。 ### RSA加密算法简介 RSA是一种非对称加密算法,它基于大数分解难题来确保安全性。RSA算法涉及到两个密钥:公钥...

    JAVA实现RSA加密

    JAVA 实现RSA的加解密算法,通过BASE64编码,密钥长度1024

    java实现RSA加密算法

    在Java中实现RSA加密,主要涉及到`java.security`和`javax.crypto`这两个包。首先,我们需要生成一对密钥:公钥和私钥。公钥可以公开,用于加密数据;而私钥必须保密,用于解密数据。 1. **密钥生成**: 使用`java...

    javaRSA加密C++RSA解密

    JAVA也是通过包来实现加密和解密的,那么我的C++是通过OPENSSL的库来实现的。 重点来到了:RSA使用过程 1、C++随机生成一对公钥和私钥 2、JAVA用公钥给明文打包形成密文 3、C++用私钥解密密文

    RSA加密 Java实现

    RSA加密 Java实现,RSA加密 Java实现,RSA加密 Java实现

    rsa与aes混合加密java实现

    在Java中,RSA加密可以通过`java.security`包中的`KeyPairGenerator`、`KeyPair`、`Cipher`等类实现。首先,我们需要生成一对密钥,然后使用公钥进行加密,私钥用于解密。 **AES算法** AES(Advanced Encryption ...

    C#RSA加密与JAVA解密,实现相互通信

    "C# RSA加密与JAVA解密,实现相互通信"的主题聚焦于如何利用RSA公钥/私钥加密算法在C#和Java两个不同的编程环境中实现安全的数据交换。RSA是一种非对称加密算法,它使用一对密钥——公钥和私钥,公钥用于加密,私钥...

    asp.net RSA 私钥加密公钥解密 能解 php Java 实现RSA加密互通

    本文将深入探讨如何在ASP.NET环境中实现RSA加密,并且与PHP和Java进行互通,以及涉及的PKCS#8格式的密钥文件和BouncyCastle.Crypto.dll库的使用。 首先,RSA是一种基于大素数因子分解困难性的公钥加密算法,由Ron ...

    基于JAVA的RSA文件加密软件的设计与实现源代码

    基于Java的RSA文件加密软件的设计与实现项目是一款基于Java语言开发的文件加密软件,主要使用Java加密标准库中的RSA算法实现文件加密和解密。该系统主要适用于需要保护文件安全性的个人或企业用户,提供可靠的文件...

    java rsa加密算法实现

    在Java中实现RSA加密算法,主要涉及以下几个核心概念和步骤: 1. **RSA原理**:RSA算法基于数论中的大数因子分解难题,由两个大素数P和Q相乘得到N,然后计算N的欧拉函数φ(N) = (P-1) * (Q-1),选取一个与φ(N)互质...

    Rsa加密解密.rar_RSA 加密解密_java rsa_rsa加密_rsa加密java_加密 解密

    在Java中实现RSA加密解密,需要使用Java Cryptography Extension (JCE)库。以下是使用RSA加密解密的基本步骤: 1. **生成密钥对**:首先,我们需要生成一对公钥和私钥。在Java中,`java.security.KeyPairGenerator`...

Global site tag (gtag.js) - Google Analytics