⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pairkeyexample.java

📁 MD5加密技术MD5加密技术MD5加密技术MD5加密技术
💻 JAVA
字号:
package cn.pairKey;

import java.security.*;
import java.security.spec.*;
import javax.crypto.*;

public class PairKeyExample {

	public static void main(String argv[]) {
		try {
			String algorithm = "RSA"; // 定义加密算法,可用 DES,DESede,Blowfish
			String message = "张三,你好,我是李四";

			// 产生张三的密钥对(keyPairZhang)
			KeyPairGenerator keyGeneratorZhang = KeyPairGenerator
					.getInstance(algorithm); // 指定采用的算法
			keyGeneratorZhang.initialize(1024); // 指定密钥长度为1024位
			KeyPair keyPairZhang = keyGeneratorZhang.generateKeyPair(); // 产生密钥对
			System.out.println("生成张三的公钥对");

			// 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节
			byte[] publicKeyZhangEncode = keyPairZhang.getPublic().getEncoded();

			// 通过网络或磁盘等方式,把公钥编码传送给李四
			// 李四接收到张三编码后的公钥,将其解码
			KeyFactory keyFacoryLi = KeyFactory.getInstance(algorithm); // 得到KeyFactory对象
			X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(
					publicKeyZhangEncode); // 公钥采用X.509编码
			PublicKey publicKeyZhang = keyFacoryLi.generatePublic(x509KeySpec); // 将公钥的KeySpec对象转换为公钥
			System.out.println("李四成功解码,得到张三的公钥");

			// 李四用张三的公钥加密信息,并发送给李四
			Cipher cipher = Cipher.getInstance("RSA"); // 得到Cipher对象
			cipher.init(Cipher.ENCRYPT_MODE, publicKeyZhang); // 用张三的公钥初始化Cipher对象
			byte[] cipherMessage = cipher.doFinal(message.getBytes()); // 得到加密信息
			System.out.println("加密后信息:" + new String(cipherMessage));
			System.out.println("加密完成,发送给李四...");

			// 张三用自己的私钥解密从李四处收到的信息
			cipher.init(Cipher.DECRYPT_MODE, keyPairZhang.getPrivate()); // 张三用其私钥初始化Cipher对象
			byte[] originalMessage = cipher.doFinal(cipherMessage); // 得到解密后信息
			System.out.println("张三收到信息,解密后为:" + new String(originalMessage));
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -