java实现中文RSA公钥加密私钥解密代码
代码语言:java
所属分类:加密解密
代码描述:java实现中文RSA公钥加密私钥解密代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
import java.io.UnsupportedEncodingException; import java.math.BigInteger; import java.net.URLDecoder; import java.net.URLEncoder; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; import java.security.interfaces.RSAPrivateCrtKey; import java.security.interfaces.RSAPublicKey; import java.util.logging.Level; import java.util.logging.Logger; import java.io.*; public class RSAChinese { /** * 创建密钥对生成器,指定加密和解密算法为RSA * @param keylen * @return */ public String[] createKey(int keylen) {// 输入密钥长度 String[] output = new String[5]; // 用来存储密钥的e n d p q try { KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); kpg.initialize(keylen); // 指定密钥的长度,初始化密钥对生成器 KeyPair kp = kpg.generateKeyPair(); // 生成密钥对 RSAPublicKey puk = (RSAPublicKey) kp.getPublic(); RSAPrivateCrtKey prk = (RSAPrivateCrtKey) kp.getPrivate(); BigInteger e = puk.getPublicExponent(); BigInteger n = puk.getModulus(); BigInteger d = prk.getPrivateExponent(); BigInteger p = prk.getPrimeP(); BigInteger q = prk.getPrimeQ(); output[0] = e.toString(); output[1] = n.toString(); output[2] = d.toString(); output[3] = p.toString(); output[4] = q.toString(); } catch (NoSuchAlgorithmException ex) { Logger.getLogger(RSAChinese.class.getName()).log(Level.SEVERE, null, ex); } return output; } /** * 加密在RSA公钥中包含有两个整数信息:e和n。对于明文数字m,计算密文的公式是m的e次方再与n求模。 * @param clearText 明文 * @param eStr 公钥 * @param nStr * @return */ public String encrypt(String clearText, String eStr, String nStr) { String secretText = new String(); try { clearText = URLEncoder.encode(clearText,"GBK"); byte text[]=clearText.getBytes("GBK");//将字符串转换成byte类型数组,实质是各个字符的二进制形式 BigInteger mm=new BigInteger(text);//二进制串转换为一个大整数 clearText = mm.toString(); BigInteger e = new BigInteger(eStr); BigInteger n = new BigInteger(nStr); byte[] ptext = clearText.getBytes("UTF8"); // 获取明文的大整数 BigInteger m = new BigInteg.........完整代码请登录后点击上方下载按钮下载查看
网友评论0