<th id="wu2k2"><s id="wu2k2"></s></th> <blockquote id="wu2k2"></blockquote>
  • <tr id="wu2k2"></tr>
  • <samp id="wu2k2"><tbody id="wu2k2"></tbody></samp><samp id="wu2k2"><tbody id="wu2k2"></tbody></samp>
  • 更多精彩內容,歡迎關注:

    視頻號
    視頻號

    抖音
    抖音

    快手
    快手

    微博
    微博

    java rsa私鑰加密

    文檔

    java rsa私鑰加密

    javarsa私鑰加密是一種加密算法,RSA加密注意事項:1、首先產生公鑰與私鑰。2、 設計加密與解密的算法。3、私鑰加密的數據信息只能由公鑰可以解密。4、公鑰加密的數據信息只能由私鑰可以解密。
    推薦度:
    導讀javarsa私鑰加密是一種加密算法,RSA加密注意事項:1、首先產生公鑰與私鑰。2、 設計加密與解密的算法。3、私鑰加密的數據信息只能由公鑰可以解密。4、公鑰加密的數據信息只能由私鑰可以解密。

    java rsa私鑰加密是什么?讓我們一起來了解一下吧!

    java rsa私鑰加密是一種加密算法。私鑰加密算法是用私鑰來進行加密與解密信息。私鑰加密也被稱作對稱加密,原因是加密與解密使用的秘鑰是同一個。

    RSA加密需要注意的事項如下:

    1.?首先產生公鑰與私鑰

    2.?設計加密與解密的算法

    3.?私鑰加密的數據信息只能由公鑰可以解密

    4.?公鑰加密的數據信息只能由私鑰可以解密

    實戰演練,具體步驟如下:

    public?class?RsaCryptTools?{
    ????private?static?final?String?CHARSET?=?"utf-8";
    ????private?static?final?Base64.Decoder?decoder64?=?Base64.getDecoder();
    ????private?static?final?Base64.Encoder?encoder64?=?Base64.getEncoder();
    ?
    ????/**
    ?????*?生成公私鑰
    ?????*?@param?keySize
    ?????*?@return
    ?????*?@throws?NoSuchAlgorithmException
    ?????*/
    ????public?static?SecretKey?generateSecretKey(int?keySize)?throws?NoSuchAlgorithmException?{
    ????????//生成密鑰對
    ????????KeyPairGenerator?keyGen?=?KeyPairGenerator.getInstance("RSA");
    ????????keyGen.initialize(keySize,?new?SecureRandom());
    ????????KeyPair?pair?=?keyGen.generateKeyPair();
    ????????PrivateKey?privateKey?=?pair.getPrivate();
    ????????PublicKey?publicKey?=?pair.getPublic();
    ????????//這里可以將密鑰對保存到本地
    ????????return?new?SecretKey(encoder64.encodeToString(publicKey.getEncoded()),?encoder64.encodeToString(privateKey.getEncoded()));
    ????}
    ????/**
    ?????*?私鑰加密
    ?????*?@param?data
    ?????*?@param?privateInfoStr
    ?????*?@return
    ?????*?@throws?IOException
    ?????*?@throws?InvalidCipherTextException
    ?????*/
    ????public?static?String?encryptData(String?data,?String?privateInfoStr)?throws?IOException,?InvalidKeySpecException,?NoSuchAlgorithmException,?InvalidKeyException,?NoSuchPaddingException,?BadPaddingException,?IllegalBlockSizeException?{
    ?
    ????????Cipher?cipher?=?Cipher.getInstance("RSA/ECB/PKCS1Padding");
    ????????cipher.init(Cipher.ENCRYPT_MODE,?getPrivateKey(privateInfoStr));
    ????????return?encoder64.encodeToString(cipher.doFinal(data.getBytes(CHARSET)));
    ????}
    ?
    ????/**
    ?????*?公鑰解密
    ?????*?@param?data
    ?????*?@param?publicInfoStr
    ?????*?@return
    ?????*/
    ????public?static?String?decryptData(String?data,?String?publicInfoStr)?throws?NoSuchPaddingException,?NoSuchAlgorithmException,?InvalidKeySpecException,?InvalidKeyException,?BadPaddingException,?IllegalBlockSizeException,?UnsupportedEncodingException?{
    ????????byte[]?encryptDataBytes=decoder64.decode(data.getBytes(CHARSET));
    ????????//解密
    ????????Cipher?cipher?=?Cipher.getInstance("RSA/ECB/PKCS1Padding");
    ????????cipher.init(Cipher.DECRYPT_MODE,?getPublicKey(publicInfoStr));
    ????????return?new?String(cipher.doFinal(encryptDataBytes),?CHARSET);
    ????}
    ????private?static?PublicKey?getPublicKey(String?base64PublicKey)?throws?NoSuchAlgorithmException,?InvalidKeySpecException?{
    ????????X509EncodedKeySpec?keySpec?=?new?X509EncodedKeySpec(Base64.getDecoder().decode(base64PublicKey.getBytes()));
    ????????KeyFactory?keyFactory?=?KeyFactory.getInstance("RSA");
    ????????return?keyFactory.generatePublic(keySpec);
    ????}
    ????private?static?PrivateKey?getPrivateKey(String?base64PrivateKey)?throws?NoSuchAlgorithmException,?InvalidKeySpecException?{
    ????????PrivateKey?privateKey?=?null;
    ????????PKCS8EncodedKeySpec?keySpec?=?new?PKCS8EncodedKeySpec(Base64.getDecoder().decode(base64PrivateKey.getBytes()));
    ????????KeyFactory?keyFactory?=?null;
    ????????keyFactory?=?KeyFactory.getInstance("RSA");
    ????????privateKey?=?keyFactory.generatePrivate(keySpec);
    ????????return?privateKey;
    ????}
    ?
    ????/**
    ?????*?密鑰實體
    ?????*?@author?hank
    ?????*?@since?2020/2/28?0028?下午?16:27
    ?????*/
    ????public?static?class?SecretKey?{
    ????????/**
    ?????????*?公鑰
    ?????????*/
    ????????private?String?publicKey;
    ????????/**
    ?????????*?私鑰
    ?????????*/
    ????????private?String?privateKey;
    ?
    ????????public?SecretKey(String?publicKey,?String?privateKey)?{
    ????????????this.publicKey?=?publicKey;
    ????????????this.privateKey?=?privateKey;
    ????????}
    ?
    ????????public?String?getPublicKey()?{
    ????????????return?publicKey;
    ????????}
    ?
    ????????public?void?setPublicKey(String?publicKey)?{
    ????????????this.publicKey?=?publicKey;
    ????????}
    ?
    ????????public?String?getPrivateKey()?{
    ????????????return?privateKey;
    ????????}
    ?
    ????????public?void?setPrivateKey(String?privateKey)?{
    ????????????this.privateKey?=?privateKey;
    ????????}
    ?
    ????????@Override
    ????????public?String?toString()?{
    ????????????return?"SecretKey{"?+
    ????????????????????"publicKey='"?+?publicKey?+?'\''?+
    ????????????????????",?privateKey='"?+?privateKey?+?'\''?+
    ????????????????????'}';
    ????????}
    ????}
    ?
    ????private?static?void?writeToFile(String?path,?byte[]?key)?throws?IOException?{
    ????????File?f?=?new?File(path);
    ????????f.getParentFile().mkdirs();
    ?
    ????????try(FileOutputStream?fos?=?new?FileOutputStream(f))?{
    ????????????fos.write(key);
    ????????????fos.flush();
    ????????}
    ????}
    ?
    ????public?static?void?main(String[]?args)?throws?NoSuchAlgorithmException,?NoSuchPaddingException,?IOException,?BadPaddingException,?IllegalBlockSizeException,?InvalidKeyException,?InvalidKeySpecException?{
    ????????SecretKey?secretKey?=?generateSecretKey(2048);
    ????????System.out.println(secretKey);
    ????????String?enStr?=?encryptData("你好測試測試",?secretKey.getPrivateKey());
    ????????System.out.println(enStr);
    ????????String?deStr?=?decryptData(enStr,?secretKey.getPublicKey());
    ????????System.out.println(deStr);
    ????????enStr?=?encryptData("你好測試測試hello",?secretKey.getPrivateKey());
    ????????System.out.println(enStr);
    ????????deStr?=?decryptData(enStr,?secretKey.getPublicKey());
    ????????System.out.println(deStr);
    ????}
    ?
    }

    以上就是小編今天的分享了,希望可以幫助到大家。

    文檔

    java rsa私鑰加密

    javarsa私鑰加密是一種加密算法,RSA加密注意事項:1、首先產生公鑰與私鑰。2、 設計加密與解密的算法。3、私鑰加密的數據信息只能由公鑰可以解密。4、公鑰加密的數據信息只能由私鑰可以解密。
    推薦度:
    為你推薦
    資訊專欄
    熱門視頻
    相關推薦
    java rtp java runnable java runtime.exec java rxjava java sandbox java script java selector java selenium java semaphore java separator java sequence java serializable java serializable接口 java serialversionuid java setlayout java platform java settimeout java plug-in java sftp java plugin java rsa公鑰加密 java pipeline java ping java phoenix java paypal java path java rsa加密 java rotate java reverse java reverse() java retrofit java resume java resultset java result java rest java requests java partial java request java parser java repeat
    Top 国产精品成久久久久三级| 国产精品99精品无码视亚| 99久久成人国产精品免费| 国产一精品一AV一免费孕妇| 久久久精品波多野结衣AV| 精品少妇一区二区三区在线| 人妻精品久久久久中文字幕69| 国产精品小黄鸭一区二区三区| 国内精品视频一区二区三区 | 久久免费观看国产精品| 国产精品亚洲精品日韩已方| 日韩精品中文字幕视频一区| 国产精品毛片久久久久久久| 久久99精品九九九久久婷婷| 国产精品福利尤物youwu| 无码精品视频一区二区三区| 精品国产91久久久久久久| 精品国产一区二区三区在线观看 | 精品久久久久一区二区三区| 国产大陆亚洲精品国产| 国产精品无码一区二区三区毛片 | 精品亚洲一区二区三区在线播放| 校园春色国产精品| 国产精品人人妻人人爽| 中文人妻熟妇乱又伦精品| 国产精品一二二区| 精品不卡一区中文字幕| 尤物在线观看精品国产福利片| 亚洲精品精华液一区二区| 国产精品夜色一区二区三区| 2021国产成人午夜精品| 亚洲精品电影天堂网| 国产精品美女久久久久AV福利| 午夜精品久久久久9999高清| 精品一区二区AV天堂| 九色国产在视频线精品视频| 国产亚洲午夜精品| 国产A∨国片精品一区二区 | 日韩精品电影在线观看| 国产精品美女一区二区三区| 亚洲av永久中文无码精品|