日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

RSA非对称加密算法Java实现

發(fā)布時(shí)間:2025/4/16 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RSA非对称加密算法Java实现 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

RSA適用場(chǎng)景:

1)乙方生成兩把密鑰(公鑰和私鑰)。公鑰是公開(kāi)的,任何人都可以獲得,私鑰則是保密的。
2)甲方獲取乙方的公鑰,然后用它對(duì)信息加密。
3)乙方得到加密后的信息,用私鑰解密。


參考代碼如下:

package sk.ml;import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.security.Key; import java.security.KeyPair; import java.security.KeyPairGenerator; import javax.crypto.Cipher;public class RSAAsymmetricEncryption {/*** 公鑰加密,私鑰解密(非對(duì)稱加密)* */public static void main(String[] args) throws Exception {//公鑰加密String express="abc";publicEnrypy(express); //私鑰解密privateEncode();}/*** 加密的方法,使用公鑰進(jìn)行加密* @throws Exception*/public static void publicEnrypy(String express) throws Exception {Cipher cipher = Cipher.getInstance("RSA");KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); KeyPair keyPair = keyPairGenerator.generateKeyPair();// 生成鑰匙對(duì) Key publicKey = keyPair.getPublic();// 得到公鑰 Key privateKey = keyPair.getPrivate();// 得到私鑰 saveKey(privateKey);//把私鑰保存到硬盤上 cipher.init(Cipher.ENCRYPT_MODE, publicKey);// 設(shè)置為加密模式 byte[] result = cipher.doFinal(express.getBytes());// 對(duì)數(shù)據(jù)進(jìn)行加密 saveData(result);//把加密后的數(shù)據(jù)保存到硬盤上 System.out.println(result.toString());//顯示密文}/*** 解密的方法,使用私鑰進(jìn)行解密* @throws Exception*/public static void privateEncode() throws Exception {Cipher cipher = Cipher.getInstance("RSA"); Key privateKey = loadKey();// 從硬盤中讀取私鑰 cipher.init(Cipher.DECRYPT_MODE, privateKey);//設(shè)置為解密模式,用私鑰解密 byte[] data = loadData();// 從硬盤中讀取加密后的數(shù)據(jù) byte[] result = cipher.doFinal(data);//對(duì)加密后的數(shù)據(jù)進(jìn)行解密,返回解密后的結(jié)果System.out.println( new String(result) );//顯示明文}/*** 從硬盤中加載加密后的文件* @return* @throws FileNotFoundException* @throws IOException*/private static byte[] loadData() throws FileNotFoundException, IOException {FileInputStream fileInputStream = new FileInputStream(new File("D:\\tmp\\rsa.dat"));ByteArrayOutputStream outputStream = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len = 0;while ((len = fileInputStream.read(buffer)) != -1) {outputStream.write(buffer, 0, len);}fileInputStream.close();return outputStream.toByteArray();}/*** 把加密后的密文保存到硬盤上* @param result* @throws FileNotFoundException* @throws IOException*/private static void saveData(byte[] result) throws FileNotFoundException, IOException {FileOutputStream fileOutputStream = new FileOutputStream(new File("D:\\tmp\\rsa.dat"));fileOutputStream.write(result);}/*** 從硬盤中加載私鑰* @return* @throws IOException* @throws FileNotFoundException* @throws ClassNotFoundException*/private static Key loadKey() throws IOException, FileNotFoundException, ClassNotFoundException {ObjectInputStream inputStream = new ObjectInputStream( new FileInputStream(new File("D:\\tmp\\rsa_prikey.dat")));Key privateKey = (Key) inputStream.readObject();return privateKey;}/*** 把私鑰保存到硬盤上* @param privateKey* @throws IOException* @throws FileNotFoundException*/private static void saveKey(Key privateKey) throws IOException, FileNotFoundException {ObjectOutputStream outputStream = new ObjectOutputStream( new FileOutputStream(new File("D:\\tmp\\rsa_prikey.dat")));outputStream.writeObject(privateKey);} }



總結(jié)

以上是生活随笔為你收集整理的RSA非对称加密算法Java实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。