import java.lang.*;
import java.util.*;
import java.net.*;
import java.io.*;
import java.security.*;
import java.security.interfaces.*;
import sun.misc.*;
import com.apusic.*;
import sun.security.x509.x509key;
public class java_crypto {
public static void main(string[] args) {
byte key_module[]=new byte[128];
byte pukey[]=new byte[3];
byte prkey[]=new byte[128];
byte src_byte[]="1234567812345678".getbytes();
system.out.println(src_byte.length);
byte key_byte[]="23456781".getbytes();
int i=0;
/*******************************************************************************
* 加载jce
*/
// java.security.security.removeprovider("sun");
// java.security.security.removeprovider("sunrsasign");
// java.security.security.removeprovider("sunjce");
java.security.security.insertproviderat(new com.apusic.security.provider.provider(),1);
java.security.provider[] p_array=java.security.security.getproviders();
for (i=1;i<=(p_array.length);i++) {
system.out.println("provider["+i+"]="+p_array[i-1].getname());
}
try {
/*******************************************************************************
* md5摘要
*/
/*
system.out.println("md5="+md5(src_byte));
system.out.println("md5_show="+md5_show(md5(src_byte)));
*/
/*******************************************************************************
* 生成des密钥
*/
// javax.crypto.secretkey deskey;
/*
try {
//读系列化密钥
deskey=(javax.crypto.secretkey)rwobject("deskey");
system.out.println("read des key ok");
}
catch (exception e) {
system.out.println("read keyfile error,generate deskey...");
//生成des密钥
javax.crypto.keygenerator key=javax.crypto.keygenerator.getinstance("des");
key.init(56);
// key.init(64);
deskey=key.generatekey();
system.out.println("generator des key ok");
//写系列化密钥
// rwobject("deskey",(object)deskey);
}
*/
// deskey=deskey(key_byte);
/*******************************************************************************
* des加解密
*/
/*
byte[] encrypt,decrypt;
//加密
encrypt=desencrypt(deskey,src_byte);
system.out.println("encrypt="+new string(encrypt));
//解密
decrypt=desdecrypt(deskey,encrypt);
system.out.println("decrypt="+new string(decrypt));
*/
/*******************************************************************************
* 生成rsa密钥对
*/
java.security.keypair kp;
rsapublickey publickey;
rsaprivatekey privatekey;
java.io.fileoutputstream fos;
try {
//读系列化rsa密钥
kp=(java.security.keypair)rwobject("rsakey");
system.out.println("read rsa key ok");
}
catch (exception e) {
system.out.println("read keyfile error,generate rsakey...");
//生成rsa密钥
keypairgenerator kpg=keypairgenerator.getinstance("rsa");
kpg.initialize(1024);
kp=kpg.generatekeypair();
system.out.println("generate rsa key ok="+kp.tostring());
//写系列化密钥
rwobject("rsakey",(object)kp);
}
publickey=(rsapublickey)kp.getpublic();
//system.out.println("publickey="+publickey.tostring());
privatekey=(rsaprivatekey)kp.getprivate();
//system.out.println("privatekey="+privatekey.tostring());
/*
try {
byte[] publickey_byte=publickey.getencoded();
publickey=publickey(publickey_byte);
system.out.println("publickey="+publickey.tostring());
byte[] privatekey_byte=privatekey.getencoded();
privatekey=privatekey(privatekey_byte);
system.out.println("privatekey="+privatekey.tostring());
}
catch (exception e) {
system.out.println("exception:"+e);
}
*/
byte[] publickey_byte=publickey.getencoded();
byte[] privatekey_byte=privatekey.getencoded();
fos=new java.io.fileoutputstream("publickey");
fos.write(publickey_byte);
fos=new java.io.fileoutputstream("privatekey");
fos.write(privatekey_byte);
system.arraycopy(publickey_byte,22+8-1,key_module,1-1,128);
fos=new java.io.fileoutputstream("key_module");
fos.write(key_module);
system.arraycopy(publickey_byte,22+138-1,pukey,1-1,3);
fos=new java.io.fileoutputstream("publickey");
fos.write(pukey);
system.arraycopy(privatekey_byte,32+138-1,prkey,1-1,128);
fos=new java.io.fileoutputstream("privatekey");
fos.write(prkey);
/*******************************************************************************
* rsa加解密`
*/
//公钥加密
byte[] endata=rsaencrypt(publickey,src_byte);
//system.out.println("endata="+md5_show(endata));
fos=new java.io.fileoutputstream("public_endata");
fos.write(endata);
//私钥解密
byte[] dedata=rsadecrypt(privatekey,endata);
system.out.println("dedata="+new string(dedata));
//私钥加密
endata=rsaencrypt(privatekey,src_byte);
//system.out.println("endata="+md5_show(endata));
fos=new java.io.fileoutputstream("private_endata");
fos.write(endata);
//公钥解密
dedata=rsadecrypt(publickey,endata);
system.out.println("dedata="+new string(dedata));
/*******************************************************************************
* md5withrsa签名
*/
/*
//私钥签名
byte[] sign_byte=sign(privatekey,src_byte);
system.out.println("sign="+new string(sign_byte));
//公钥验证签名
if (vsign(publickey,src_byte,sign_byte)) {
system.out.println("sign ok");
}
else {
system.out.println("sign error");
}
*/
}
catch (exception e) {
system.out.println("exception:"+e);
}
}
/*******************************************************************************
* 生成rsa public key
*/
static java.security.interfaces.rsapublickey publickey(byte[] public_key_byte) throws exception {
java.security.spec.x509encodedkeyspec ks=new java.security.spec.x509encodedkeyspec(public_key_byte);
java.security.keyfactory kf=java.security.keyfactory.getinstance("rsa");
return (java.security.interfaces.rsapublickey)kf.generatepublic(ks);
}
/*******************************************************************************
* 生成rsa private key
*/
static java.security.interfaces.rsaprivatekey privatekey(byte[] private_key_byte) throws exception {
java.security.spec.pkcs8encodedkeyspec ks=new java.security.spec.pkcs8encodedkeyspec(private_key_byte);
java.security.keyfactory kf=java.security.keyfactory.getinstance("rsa");
return (java.security.interfaces.rsaprivatekey)kf.generateprivate(ks);
}
/*******************************************************************************
* rsa公钥加密
*/
static byte[] rsaencrypt(java.security.interfaces.rsapublickey key,byte[] src) throws exception {
javax.crypto.cipher cipher=javax.crypto.cipher.getinstance("rsa");
cipher.init(java
闽公网安备 35060202000074号