Java KeyPair

import java.io.FileInputStream;
import java.io.IOException;
import java.security.*;
import java.security.cert.CertificateFactory;
import java.security.spec.EncodedKeySpec;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;

public class Rsa001
{

public static void main(String[] args) throws Exception
{
Rsa001 rsa=new Rsa001();
KeyPair key=rsa.create();
byte[] pub=key.getPublic().getEncoded();
byte[] pri=key.getPrivate().getEncoded();

byte[] data="abc".getBytes();

byte[] sign=rsa.sign(data, pri);

boolean bl=rsa.check(sign, pub, data);

System.out.println("test --- "+bl);

}





public static KeyPair create() throws Exception{




KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024);

KeyPair keys = keyGen.generateKeyPair();

System.out.println( "create() okay " );
return keys;
}


public static byte[] sign(byte[] data,byte[] pri) throws Exception{

Signature sig = Signature.getInstance("MD5WithRSA");
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(pri);
PrivateKey privateKey2 = keyFactory.generatePrivate(privateKeySpec);

sig.initSign(privateKey2);

sig.update(data);

byte[] signature = sig.sign();



PrintHex(signature,signature.length);
System.out.println( "sign() oaky " );
return signature;


}



public static byte[] sign2(byte[] data,PrivateKey pri) throws Exception{

Signature sig = Signature.getInstance("MD5WithRSA");

sig.initSign(pri);

sig.update(data);

byte[] signature = sig.sign();

PrintHex(signature,signature.length);
System.out.println( "sign() oaky " );
return signature;
}


public static boolean check(byte[] sign,PublicKey pub,byte[] data) throws Exception{
Signature sig = Signature.getInstance("MD5WithRSA");

KeyFactory keyFactory = KeyFactory.getInstance("RSA");
sig.initVerify(pub);
sig.update(data);

if (sig.verify(sign))
{
return true;
}
else
{
return false;
}
}





public static boolean check(byte[] sign,byte[] pub,byte[] data) throws Exception{
Signature sig = Signature.getInstance("MD5WithRSA");

KeyFactory keyFactory = KeyFactory.getInstance("RSA");
EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(pub);
PublicKey publicKey2 = keyFactory.generatePublic(publicKeySpec);
sig.initVerify(publicKey2);

sig.update(data);

if (sig.verify(sign))
{
return true;
}
else
{
return false;
}
}




public static void PrintHex(byte data[],int len)
{
int i;
int tmp;
String Tmp="";
for(i=0; i<len; i++)
{
if(i%16 == 0)
{
//System.out.println("");

if(i<0x10)
Tmp = "0x000";
if((i<0x100) && (i>=0x10))
Tmp = "0x00";
if((i>=0x100)&&(i<0x1000))
Tmp = "0x0";
if(i>=0x1000)
Tmp = "0x";
//System.out.print(Tmp+Integer.toHexString(i)+"h: ");
}
tmp = data[i];
if(tmp < 0)
tmp = 256 + tmp;
if(tmp <0x10)
System.out.print("0");
else
System.out.print("1");
}
System.out.println("");
}
public String encode(byte[] bytes){
return new sun.misc.BASE64Encoder().encode(bytes);
}
public byte[] decode(String str){
byte[] bt=null;
try{
sun.misc.BASE64Decoder decoder=new sun.misc.BASE64Decoder();
bt=decoder.decodeBuffer(str);

}catch(IOException e){
e.printStackTrace();
}
return bt;
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值