java rsa api_利用java api 实现 RSA算法

package abchat.org.security;

import java.security.*;

import javax.crypto.*;

import javax.crypto.spec.*;

/**

*

* @author GuoXiaoHe

*/

public class ABchatRSA {

/** Creates a new instance of ABchatRSA */

/*构建需要的函数变量*/

private KeyPairGenerator kePaGen=null;                //秘密钥匙生成器;

private KeyPair          keyPair=null;                //钥匙对,公尺 和米尺;

private PublicKey        publicKey=null;              //共匙;

private PrivateKey       privateKey=null;             //密匙;

private int             keySize    =512;               //密匙长

public ABchatRSA(int keysize) {

this.keySize= keysize;

try{

this.kePaGen= KeyPairGenerator.getInstance("RSA"); //

this.kePaGen.initialize(this.keySize);

//

this.keyPair=this.kePaGen.genKeyPair();

this.privateKey=this.keyPair.getPrivate();

this.publicKey=this.keyPair.getPublic();

//this.abcharRsaCipher=Cipher.getInstance("RSA/ECB/PKCS1Padding");

}catch( Exception err){

err.printStackTrace();

}

}

public PublicKey getPublicKey()

{

return this.publicKey;

}

public PrivateKey getPrivateKey()

{

return this.privateKey;

}

public static String encripyRSA(String platxt,PublicKey publickey)

{

String cipherStr=null;                              //返回的加密后的字符串;

byte[]plainByte=null;                              //获得明文的byte数组;

byte[]cipherByte;                                    //产生秘闻的byte数组;

Cipher cipher =null;

try{

plainByte=platxt.getBytes("ISO-8859-1");

cipher=Cipher.getInstance("RSA/ECB/PKCS1Padding");

cipher.init(Cipher.ENCRYPT_MODE,publickey);

cipherByte=cipher.doFinal(plainByte);

cipherStr=new String(cipherByte,"ISO-8859-1");

}catch(Exception err){

err.printStackTrace();

System.out.println("error in en: "+err.toString());

}

return cipherStr;

}

public static String decripyRSA(String cphtxt,PrivateKey privateKey)

{

byte[] cipherByte =null;                             //获得秘闻的byte数组;

byte[] plainByte   =null;                             //解密后的明文数组;

String   plainStr    =null;                            //解密后的明文数组;

Cipher   cipher      =null;                            //加密用;

try{

cipherByte       =cphtxt.getBytes("ISO-8859-1");    //统一使用该种编码方式;

cipher =Cipher.getInstance("RSA/ECB/PKCS1Padding");

cipher.init(Cipher.DECRYPT_MODE,privateKey);

plainByte=cipher.doFinal(cipherByte);

plainStr=new String(plainByte,"ISO-8859-1");

}catch(Exception err)

{

err.printStackTrace();

}

return plainStr;

}

public static void main(String []args)

{

ABchatRSA arsa=new ABchatRSA(512);

String en=ABchatRSA.encripyRSA("HELLO world",arsa.getPublicKey());

String de=ABchatRSA.decripyRSA(en,arsa.getPrivateKey());

System.out.println(de);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值