<sup id="m40ya"></sup>
  • 
    
  • <kbd id="m40ya"></kbd>
    <samp id="m40ya"></samp>
    <ul id="m40ya"></ul>
  • 更多精彩內容,歡迎關注:

    視頻號
    視頻號

    抖音
    抖音

    快手
    快手

    微博
    微博

    java rsa加密

    文檔

    java rsa加密

    java rsa加密是java中的一種非對稱加密算法,應用rsa的時候一般需要公鑰與私鑰,但我們采用公鑰加密的時候,便使用私鑰解密;反之,采用私鑰加密的時候,便要使用公鑰進行解密。
    推薦度:
    導讀java rsa加密是java中的一種非對稱加密算法,應用rsa的時候一般需要公鑰與私鑰,但我們采用公鑰加密的時候,便使用私鑰解密;反之,采用私鑰加密的時候,便要使用公鑰進行解密。

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

    java rsa加密是java中的一種非對稱加密算法。非對稱加密是指加密密鑰與加密秘鑰不一樣。我們經常看見的非對稱加密算法有兩種,分別是rsa和dsa。

    ?

    應用rsa的時候我們一般需要公鑰與私鑰,但我們采用公鑰加密的時候,便使用私鑰解密;反之,采用私鑰加密的時候,便要使用公鑰進行解密。在java中,我們先應用genkeypair()函數產生公鑰與私鑰同時保存在map集合里面。接著,我們以產生的公鑰對明文進行加密。針對已加密的密文,我們再利用私鑰對其解密。

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

    package?rsademo;
    ?
    import?javax.crypto.Cipher;
    import?java.nio.charset.StandardCharsets;
    import?java.security.*;
    import?java.security.spec.PKCS8EncodedKeySpec;
    import?java.security.spec.X509EncodedKeySpec;
    import?java.util.Base64;
    ?
    /**
    ?*?@author?一只鯊go
    ?*?@title?RSA_Test
    ?*?@CreateTime?2021-05-13
    ?*/
    ?
    ?
    public?class?RSA_Algorithm?{
    ????private?PrivateKey?privateKey;
    ????private?PublicKey?publicKey;
    ????private?static?String?algorithm?=?"RSA";
    ????private?static?String?signAlgorithm?=?"MD5withRSA";
    ?
    ????public?RSA_Algorithm()?throws?NoSuchAlgorithmException?{
    ????????//生成密鑰對對象
    ????????KeyPairGenerator?keyPairGenerator?=?KeyPairGenerator.getInstance(algorithm);
    ????????//生成密鑰對
    ????????KeyPair?keyPair?=?keyPairGenerator.generateKeyPair();
    ????????//生成公鑰
    ????????this.publicKey?=?keyPair.getPublic();
    ????????//生成私鑰
    ????????this.privateKey?=?keyPair.getPrivate();
    ?
    ?
    ????}
    ?
    ????/**
    ?????*?公鑰字符串還原為公鑰
    ?????*
    ?????*?@param?publicKeyString?公鑰字符串
    ?????*?@return?公鑰
    ?????*?@throws?Exception
    ?????*/
    ????public?Key?publicKeyStringToKey(String?publicKeyString)?throws?Exception?{
    ????????byte[]?publicBytes?=?Base64.getDecoder().decode(publicKeyString);
    ????????KeyFactory?keyFactory?=?KeyFactory.getInstance(algorithm);
    ????????PublicKey?publicKey?=?keyFactory.generatePublic(new?X509EncodedKeySpec(publicBytes));
    ????????return?publicKey;
    ????}
    ?
    ????/**
    ?????*?私鑰字符串還原為私鑰
    ?????*
    ?????*?@param?privateKeyString?私鑰字符串
    ?????*?@return?私鑰
    ?????*?@throws?Exception
    ?????*/
    ????public?PrivateKey?privateKeyStringToKey(String?privateKeyString)?throws?Exception?{
    ????????byte[]?privateBytes?=?Base64.getDecoder().decode(privateKeyString);
    ????????KeyFactory?keyFactory?=?KeyFactory.getInstance(algorithm);
    ????????PrivateKey?privateKey?=?keyFactory.generatePrivate(new?PKCS8EncodedKeySpec(privateBytes));
    ????????return?privateKey;
    ????}
    ?
    ????/**
    ?????*?返回公鑰字節數組
    ?????*
    ?????*?@return
    ?????*/
    ????public?byte[]?publicKeyEncoded()?{
    ????????return?this.publicKey.getEncoded();
    ????}
    ?
    ????/**
    ?????*?返回私鑰字節數組
    ?????*
    ?????*?@return
    ?????*/
    ????public?byte[]?privateKeyEncoded()?{
    ????????return?this.privateKey.getEncoded();
    ????}
    ?
    ????/**
    ?????*?公鑰byteToString轉碼
    ?????*
    ?????*?@return
    ?????*/
    ????public?String?publicKeyToString()?{
    ????????return?Base64.getEncoder().encodeToString(publicKeyEncoded());
    ????}
    ?
    ????/**
    ?????*?私鑰byteToString轉碼
    ?????*
    ?????*?@return
    ?????*/
    ????public?String?privateKeyToString()?{
    ????????return?Base64.getEncoder().encodeToString(privateKeyEncoded());
    ????}
    ?
    ????/**
    ?????*?公鑰加密
    ?????*
    ?????*?@param?input?????明文
    ?????*?@param?publicKey?公鑰
    ?????*?@return?密文字符串
    ?????*?@throws?Exception
    ?????*/
    ????public?String?pkEncoded(String?input,?String?publicKey)?throws?Exception?{
    ????????byte[]?bytes?=?input.getBytes(StandardCharsets.UTF_8);
    ????????Cipher?cipher?=?Cipher.getInstance(algorithm);
    ????????cipher.init(Cipher.ENCRYPT_MODE,?publicKeyStringToKey(publicKey));
    ????????byte[]?cipherText?=?cipher.doFinal(bytes);
    ????????return?Base64.getEncoder().encodeToString(cipherText);
    ????}
    ?
    ????/**
    ?????*?私鑰解密
    ?????*
    ?????*?@param?cipherText?密文
    ?????*?@param?privateKey?私鑰
    ?????*?@return?明文字符串
    ?????*?@throws?Exception
    ?????*/
    ????public?String?skDecoded(String?cipherText,?String?privateKey)?throws?Exception?{
    ????????byte[]?cipherbytes?=?Base64.getDecoder().decode(cipherText);
    ????????Cipher?cipher?=?Cipher.getInstance(algorithm);
    ????????cipher.init(Cipher.DECRYPT_MODE,?privateKeyStringToKey(privateKey));
    ????????byte[]?input?=?cipher.doFinal(cipherbytes);
    ????????return?new?String(input);
    ?
    ????}
    ?
    ????/**
    ?????*?數字簽名:私鑰加密
    ?????*
    ?????*?@param?signature??簽名明文字符串
    ?????*?@param?privateKey?私鑰字符串
    ?????*?@return?簽名字符串
    ?????*?@throws?Exception
    ?????*/
    ????public?String?skEncoded(String?signature,String?privateKey)?throws?Exception?{
    ????????Signature?signature1?=?Signature.getInstance(signAlgorithm);
    ????????signature1.initSign(privateKeyStringToKey(privateKey));
    ????????signature1.update(signature.getBytes(StandardCharsets.UTF_8));
    ????????byte[]?sign?=?signature1.sign();
    ????????return?Base64.getEncoder().encodeToString(sign);
    ????}
    ?
    ?????/**
    ?????*?判斷簽名:公鑰解密
    ?????*?@param?input
    ?????*?@param?signDate?簽名密文字符串
    ?????*?@param?publicKey?公鑰
    ?????*?@return?boolen
    ?????*?@throws?Exception
    ?????*/
    ????public?boolean?pkDecoded(String?input,String?signDate,String?publicKey)throws?Exception?{
    ?
    ????????Signature??signature?=?Signature.getInstance(signAlgorithm);
    ????????signature.initVerify(publicKeyStringToKey(publicKey));
    ????????signature.update(input.getBytes(StandardCharsets.UTF_8));
    ?
    ????????return?signature.verify(Base64.getDecoder().decode(signDate));
    ????}
    ?
    }

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

    文檔

    java rsa加密

    java rsa加密是java中的一種非對稱加密算法,應用rsa的時候一般需要公鑰與私鑰,但我們采用公鑰加密的時候,便使用私鑰解密;反之,采用私鑰加密的時候,便要使用公鑰進行解密。
    推薦度:
    為你推薦
    資訊專欄
    熱門視頻
    相關推薦
    java path java paypal java phoenix java ping java pipeline java rsa公鑰加密 java rsa私鑰加密 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 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 java parse java pandas java override java render java region java require java resolve
    Top 国产精品乳摇在线播放| 精品久久久久中文字幕一区| 亚洲精品无码MV在线观看| 色欲AV永久无码精品无码| 国产精品免费观看调教网| 精品一区二区三区视频| 精品国产一二三区在线影院| 国内精品视频在线观看| 精品72久久久久久久中文字幕 | 久久久久久九九精品久小说| 黑人巨大精品播放| 精品久久久一二三区| 久久99精品国产免费观看| 久久亚洲国产精品五月天婷| 日韩精品一区二区三区老鸦窝| 中文字幕成人精品久久不卡| 久久91精品久久91综合| 亚洲一区无码精品色| 精品久久久久久亚洲综合网| 久久国语露脸国产精品电影| 国产精品国色综合久久| 精品久久久久久无码国产| 国产亚洲美女精品久久| 无码人妻精品内射一二三AV | 亚洲精品欧美综合四区| 99久久99热精品免费观看国产| 中文字幕精品无码一区二区 | 中日韩精品无码一区二区三区 | 中文精品久久久久国产网址| 久久久精品一区二区三区| 国产精品原创巨作?v网站| 国产av无码久久精品| 国产精品久久久久久影视| 欧美精品黑人粗大视频| 国产精品色拉拉免费看| 国产精品亚洲精品观看不卡| 精品亚洲A∨无码一区二区三区| 久久精品视频一区二区三区| 中文字幕乱码中文乱码51精品| 久久夜色精品国产www| 精品91自产拍在线观看二区|