📄 test.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 + -