JBoss提供的常用的對稱加密算法

package com.test.resteasy;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PublicKey;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.util.Date;

import javax.ws.rs.core.MediaType;

import junit.framework.Assert;

import org.jboss.resteasy.jose.jwe.JWEBuilder;
import org.jboss.resteasy.jose.jwe.JWEInput;
import org.jboss.resteasy.jose.jws.JWSBuilder;
import org.jboss.resteasy.jose.jws.JWSInput;
import org.jboss.resteasy.jose.jws.crypto.RSAProvider;
import org.jboss.resteasy.spi.ResteasyProviderFactory;
import org.junit.Test;

public class User {
	private String name;
	private Integer age;
	private Date birth;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public Date getBirth() {
		return birth;
	}

	public void setBirth(Date birth) {
		this.birth = birth;
	}

	public static void main(String[] args) throws Exception {
		File file = new File("");
		URI uri = file.toURI();
		try {
			URL url = uri.toURL();
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}

	}

	private static KeyPair keyPair = null;
	static {
		try {
			keyPair = KeyPairGenerator.getInstance("RSA").generateKeyPair();
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
	}
	
	@Test
	public void testRSAWithContentType() throws Exception {
		

		String encoded = new JWSBuilder()
				.contentType(MediaType.TEXT_PLAIN_TYPE)
				.content("Hello World", MediaType.TEXT_PLAIN_TYPE)
				.rsa256(keyPair.getPrivate());

		//System.out.println(encoded);

		JWSInput input = new JWSInput(encoded,
				ResteasyProviderFactory.getInstance());
		//System.out.println(input.getHeader());
		String msg = (String) input.readContent(String.class);
		Assert.assertEquals("Hello World", msg);
		Assert.assertTrue(RSAProvider.verify(input, keyPair.getPublic()));

	}

	@Test
	public void testRSA() throws Exception {
		//KeyPair keyPair = KeyPairGenerator.getInstance("RSA").generateKeyPair();

		String content = "Live long and prosper.";

		{
			PublicKey publicKey = keyPair.getPublic();
			RSAPublicKey rsaPublicKey = (RSAPublicKey) publicKey;
			String encoded = new JWEBuilder()
					.contentBytes(content.getBytes())
					.RSA1_5(rsaPublicKey);
			//System.out.println("encoded: " + encoded);
			byte[] raw = new JWEInput(encoded).decrypt(
					(RSAPrivateKey) keyPair.getPrivate()).getRawContent();
			String from = new String(raw);
			Assert.assertEquals(content, from);
		}
		{
			String encoded = new JWEBuilder().contentBytes(content.getBytes())
					.RSA_OAEP((RSAPublicKey) keyPair.getPublic());
			//System.out.println("encoded: " + encoded);
			byte[] raw = new JWEInput(encoded).decrypt(
					(RSAPrivateKey) keyPair.getPrivate()).getRawContent();
			String from = new String(raw);
			Assert.assertEquals(content, from);
		}
		{
			String encoded = new JWEBuilder().contentBytes(content.getBytes())
					.A128CBC_HS256().RSA1_5((RSAPublicKey) keyPair.getPublic());
			//System.out.println("encoded: " + encoded);
			byte[] raw = new JWEInput(encoded).decrypt(
					(RSAPrivateKey) keyPair.getPrivate()).getRawContent();
			String from = new String(raw);
			Assert.assertEquals(content, from);
		}
		{
			String encoded = new JWEBuilder().contentBytes(content.getBytes())
					.A128CBC_HS256()
					.RSA_OAEP((RSAPublicKey) keyPair.getPublic());
			//System.out.println("encoded: " + encoded);
			byte[] raw = new JWEInput(encoded).decrypt(
					(RSAPrivateKey) keyPair.getPrivate()).getRawContent();
			String from = new String(raw);
			Assert.assertEquals(content, from);
		}
	}

	@Test
	public void testDirect() throws Exception {
		String content = "Live long and prosper.";
		String encoded = new JWEBuilder().contentBytes(content.getBytes()).dir("geheim");
		//System.out.println("encoded: " + encoded);
		byte[] raw = new JWEInput(encoded).decrypt("geheim").getRawContent();
		String from = new String(raw);
		Assert.assertEquals(content, from);

	}
}

發佈了62 篇原創文章 · 獲贊 9 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章