java源代码加密(java非对称加密的源代码(RSA))
本文目录
java非对称加密的源代码(RSA)
鉴于rsa加密的重要性和相关源代码的匮乏 经过整理特此贴出 需要下载bcprov jdk jar import javax crypto Cipher; import java security *; import java security spec RSAPublicKeySpec; import java security spec RSAPrivateKeySpec; import java security spec InvalidKeySpecException; import java security interfaces RSAPrivateKey; import java security interfaces RSAPublicKey; import java io *; import java math BigInteger; /** * RSA 工具类 提供加密 解密 生成密钥对等方法 * 需要到下载bcprov jdk jar * */ public class RSAUtil { /** * 生成密钥对 * @return KeyPair * @throws EncryptException */ public static KeyPair generateKeyPair() throws EncryptException { try { KeyPairGenerator keyPairGen = KeyPairGenerator getInstance( RSA new bouncycastle jce provider BouncyCastleProvider()); final int KEY_SIZE = ;//没什么好说的了 这个值关系到块加密的大小 可以更改 但是不要太大 否则效率会低 keyPairGen initialize(KEY_SIZE new SecureRandom()); KeyPair keyPair = keyPairGen genKeyPair(); return keyPair; } catch (Exception e) { throw new EncryptException(e getMessage()); } } /** * 生成公钥 * @param modulus * @param publicExponent * @return RSAPublicKey * @throws EncryptException */ public static RSAPublicKey generateRSAPublicKey(byte data = RSAUtil decrypt(recoveryPubKey raw); file = new File( l ); out = new FileOutputStream(file); out write(data); out flush(); out close(); } } 加密可以用公钥 解密用私钥 或者加密用私钥 通常非对称加密是非常消耗资源的 因此可以对大数据用对称加密如 des(具体代码可以看我以前发的贴子) 而对其对称密钥进行非对称加密 这样既保证了数据的安全 还能保证效率 lishixinzhi/Article/program/Java/gj/201311/27391
求java加密源代码(MD5,base64)
import java.security.*;import javax.crypto.*;/** * 本例解释如何利用DES私钥加密算法加解密 * * @author Devon * @version 1.0 04/03/10 */public class SingleKeyExample { public static void main(String args) { try { String algorithm = "DES"; //定义加密算法,可用 DES,DESede,Blowfish String message = "Hello World. 这是待加密的信息"; // 生成个DES密钥 KeyGenerator keyGenerator = KeyGenerator.getInstance(algorithm); keyGenerator.init(56); //选择DES算法,密钥长度必须为56位 Key key = keyGenerator.generateKey(); //生成密钥 // 生成Cipher对象 Cipher cipher = Cipher.getInstance("DES"); //用密钥加密明文(message),生成密文(cipherText) cipher.init(Cipher.ENCRYPT_MODE, key); //操作模式为加密(Cipher.ENCRYPT_MODE),key为密钥 byte cipherText = cipher.doFinal(message.getBytes()); //得到加密后的字节数组 System.out.println("加密后的信息: " + new String(cipherText)); //用密钥加密明文(plainText),生成密文(cipherByte) cipher.init(Cipher.DECRYPT_MODE, key); //操作模式为解密,key为密钥 byte sourceText = cipher.doFinal(cipherText); //获得解密后字节数组 System.out.println("解密后的信息: " + new String(sourceText)); } catch (Exception ex) { ex.printStackTrace(); } }}/** * @author Devon */import java.security.*;import java.security.spec.*;import javax.crypto.*;public class PairKeyExample { public static void main(String argv) { try { String algorithm = "RSA"; //定义加密算法,可用 DES,DESede,Blowfish String message = "张三,你好,我是李四"; //产生张三的密钥对(keyPairZhang) KeyPairGenerator keyGeneratorZhang = KeyPairGenerator.getInstance(algorithm); //指定采用的算法 keyGeneratorZhang.initialize(1024); //指定密钥长度为1024位 KeyPair keyPairZhang = keyGeneratorZhang.generateKeyPair(); //产生密钥对 System.out.println("生成张三的公钥对"); // 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 byte publicKeyZhangEncode = keyPairZhang.getPublic().getEncoded(); //通过网络或磁盘等方式,把公钥编码传送给李四 //李四接收到张三编码后的公钥,将其解码 KeyFactory keyFacoryLi = KeyFactory.getInstance(algorithm); //得到KeyFactory对象 X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(publicKeyZhangEncode); //公钥采用X.509编码 PublicKey publicKeyZhang = keyFacoryLi.generatePublic(x509KeySpec); //将公钥的KeySpec对象转换为公钥 System.out.println("李四成功解码,得到张三的公钥"); //李四用张三的公钥加密信息,并发送给李四 Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); //得到Cipher对象 cipher.init(Cipher.ENCRYPT_MODE, publicKeyZhang); //用张三的公钥初始化Cipher对象 byte cipherMessage = cipher.doFinal(message.getBytes()); //得到加密信息 System.out.println("加密后信息:" + new String(cipherMessage)); System.out.println("加密完成,发送给李四..."); //张三用自己的私钥解密从李四处收到的信息 cipher.init(Cipher.DECRYPT_MODE, keyPairZhang.getPrivate()); //张三用其私钥初始化Cipher对象 byte originalMessage = cipher.doFinal(cipherMessage); //得到解密后信息 System.out.println("张三收到信息,解密后为:" + new String(originalMessage)); } catch (Exception ex) { ex.printStackTrace(); } }}
更多文章:
nba2k14霍华德面补(nba2k14mc模式怎么打面补)
2024年6月28日 10:51
最近发现越来越多的人在学原画梦的课程,为什么会这么火,他们的课程好在哪?原画梦和涂鸦王国有什么区别
2024年7月22日 22:33
交管12123手机app下载(交管12123下载二维码在哪,12123交管官网下载app123在哪)
2024年5月19日 11:04
卧龙传说下载(有没有类似于炉石传说的手机游戏另外画质最好好点)
2024年3月12日 01:45
nba2k19手机中文版下载(NBA2K19手游在哪里可以下到啊)
2024年7月17日 11:57