package com.cattong.commons;

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;

import org.junit.Test;

import com.cattong.commons.util.Base64;
import com.cattong.commons.util.RsaUtil;

public class RsaUtilTest {

	@Test
	public void myTest() throws NoSuchAlgorithmException {
		KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
		KeyPair keyPair = keyPairGenerator.generateKeyPair();
		
		PrivateKey privateKey = keyPair.getPrivate();
		byte[] privateKeyBytes = privateKey.getEncoded();
		String privateKeyStr = new String(Base64.encodeBase64(privateKeyBytes));
		System.out.println("private key:" + privateKeyStr);
		
		PublicKey publicKey = keyPair.getPublic();
		byte[] publicKeyBytes = publicKey.getEncoded();
		String publicKeyStr = new String(Base64.encodeBase64(publicKeyBytes));
		System.out.println("public key:" + publicKeyStr);

		System.out.println("**************************");
		String plain = "我测试";
		String cipherText = RsaUtil.encrypt(plain, publicKey);
		System.out.println(cipherText);
		String dePlain = RsaUtil.decrypt(cipherText, privateKey);
		System.out.println(dePlain);
		
		System.out.println("**************************");
		String encrypted = RsaUtil.encryptWithPrivateKey("我靠我靠我靠",
				privateKeyStr.getBytes());
		System.out.println(encrypted);
		String decrypted = RsaUtil.decryptWithPublicKey(encrypted,
				publicKeyStr.getBytes());
		System.out.println(decrypted);
		System.out.println("**************************");
		
		String encrypted2 = RsaUtil.encryptWithPublicKey("我靠我靠我靠",
				publicKeyStr.getBytes());
		System.out.println(encrypted2);
		String decrypted2 = RsaUtil.decryptWithPrivateKey(encrypted2,
				privateKeyStr.getBytes());
		System.out.println(decrypted2);
	}
}