码迷,mamicode.com
首页 > 编程语言 > 详细

RSA不对称算法,对数据加密解密!

时间:2015-04-02 16:38:05      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:rsa

package com.yjm.test509;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.PrivateKey;
import java.security.Signature;
import java.security.SignatureException;
import java.security.UnrecoverableKeyException;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;

public class Test {

	public static void main(String[] args) {

		// test();
		// test1();
		// test2();
		// test3();

		test4();
	}

	private static void test4() {
		try {
			//RSA 密钥对
			KeyPairGenerator keyPairGenerator = KeyPairGenerator
					.getInstance("RSA");
			keyPairGenerator.initialize(1024);
			KeyPair keyPair = keyPairGenerator.generateKeyPair();
			
			//获得公钥私钥
			RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();
			RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate();
			
			//获取算法
			KeyFactory keyFactory = KeyFactory.getInstance("RSA");
			Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
			
			//加密
			cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPrivate());
			byte[] b = cipher.doFinal("test".getBytes());
			System.out.println(new String(b));
			
			
			//解密
			cipher.init(Cipher.DECRYPT_MODE, keyPair.getPublic());
			byte[] p = cipher.doFinal(b);
			System.out.println(new String(p));
			
			
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (NoSuchPaddingException e) {
			e.printStackTrace();
		} catch (InvalidKeyException e) {
			e.printStackTrace();
		} catch (IllegalBlockSizeException e) {
			e.printStackTrace();
		} catch (BadPaddingException e) {
			e.printStackTrace();
		}

	}



输入结果

`~Y#kQ‘~j&#NON"@uU+*,Z0KvST+usnF!(=φkPHAns$

test


RSA不对称算法,对数据加密解密!

标签:rsa

原文地址:http://yjm199.blog.51cto.com/4408395/1627693

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!