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

📄 test.java

📁 介绍xml加密和xml数字签名的方法的源代码
💻 JAVA
字号:
package test;

import java.io.File;
import java.io.IOException;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyPairGenerator;

import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

import javax.crypto.KeyGenerator;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;


import org.w3c.dom.Document;
import org.xml.sax.SAXException;

import com.verisign.xmlenc.AlgorithmType;
import com.verisign.xmlenc.Encryptor;

import com.verisign.xmlsig.KeyInfo;
import com.verisign.xpath.XPath;
import com.verisign.xpath.XPathException;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Test test = new Test();
		KeyPair keypair = test.generateKayPair();
		Key publicKey = keypair.getPublic();
		Key privateKey = keypair.getPrivate();
		Key key = test.generageSharedKey();
		Document doc = test.changeXMLtoDOM("e://a.butte");
		
		//System.out.println(doc.hasChildNodes());
		//System.out.println(doc);

		AlgorithmType dataEncriptionAlgoType = AlgorithmType.TRIPLEDES;
		AlgorithmType keyEncriptAlgoType = AlgorithmType.RSA1_5;
		KeyInfo keyInfo = new KeyInfo();
		
		try {
			Encryptor enc = new Encryptor(  doc ,
											key,
											dataEncriptionAlgoType,
											publicKey,
											keyEncriptAlgoType,
											keyInfo
											);
			
			System.out.println("Generate Encryptor OK!");
			
			String xPath = "/UserBean/password";
			XPath xpath = new XPath(xPath);
			
			try {
				enc.encryptInPlace(xpath);
				
				//System.out.println(doc.hasChildNodes());
				//System.out.println(doc.getFirstChild().getNodeName());
				//XMLUtil.outputDocument(doc);
				
				//获得将DOM文档转化为XML文件的转换器,在jdk1.4中,有类TransformerFactory
				// 来实现,类Transformer实现转化API。      
				TransformerFactory tfactory = TransformerFactory.newInstance();      
				Transformer transformer;
				try {
					transformer = tfactory.newTransformer();
					//将DOM对象转化为DOMSource类对象,该对象表现为转化成别的表达形式的信息容器。      
					DOMSource source = new DOMSource(doc);
					/* 获得一个StreamResult类对象,该对象是DOM文档转化成的其他形式的文档的容器,可以是XML文件,文本文件,HTML文件。这里为一个XML文件。*/    
					StreamResult result = new StreamResult(new File("e://b.xml"));
					// 调用API,将DOM文档转化成XML文件。    
					try {
						transformer.transform(source,result);
					} catch (TransformerException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				} catch (TransformerConfigurationException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				
			} catch (XPathException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NoSuchAlgorithmException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 

	}
	public KeyPair generateKayPair(){
		KeyPair keypair = null;
		try {
			KeyPairGenerator pairgen = KeyPairGenerator.getInstance("RSA");
			SecureRandom random = new SecureRandom();
			int keysize = 1024;
			pairgen.initialize(keysize, random);
			keypair = pairgen.generateKeyPair();
			System.out.println("Key Pair Generated OK!");
		} catch (NoSuchAlgorithmException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return keypair;
	}
	
	public Key generageSharedKey(){
		KeyGenerator kg = null;
		Key key = null;
		try {
			kg = KeyGenerator.getInstance("DESede");
			key = kg.generateKey();
			System.out.println("Shared Key Generated OK!");
		} catch (NoSuchAlgorithmException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return key;
	}
	
	public Document changeXMLtoDOM(String filename) {
		Document doc = null;
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		File f = new File(filename);
		DocumentBuilder builder = null;
		try {
			builder = factory.newDocumentBuilder();
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			doc = builder.parse(f);
			System.out.println("get DOM from XML file OK!");
		} catch (SAXException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return doc;
	}	
}

⌨️ 快捷键说明

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