<strike id="cakm0"></strike>
  • <button id="cakm0"><dl id="cakm0"></dl></button>
  • <samp id="cakm0"><tbody id="cakm0"></tbody></samp>
    <samp id="cakm0"><pre id="cakm0"></pre></samp><ul id="cakm0"></ul>
    <strike id="cakm0"></strike>
    <li id="cakm0"></li>
  • <ul id="cakm0"></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 国产精品亚洲av色欲三区| 久久久久免费精品国产小说| 精品久久久久成人码免费动漫| 精品无码国产污污污免费网站国产 | 亚洲精品国产第1页| 亚洲欧洲久久久精品| 国产在线观看麻豆91精品免费| 自拍偷在线精品自拍偷无码专区| 国产美女精品人人做人人爽| 久久精品国产AV一区二区三区 | 国产在线精品观看一区| 国产精品亚洲精品青青青| 久久精品视频国产| 成人国产精品免费视频| 四虎成人精品在永久在线观看| 精品影片在线观看的网站| 久久精品国产亚洲av水果派 | 国产精品麻花传媒二三区别| 精品无码久久久久久午夜| 精品国产品香蕉在线观看75| 亚洲第一区精品观看| 国产精品视频1区| 久久这里只精品99re66| 2021精品国产品免费观看| 国产AV无码专区亚洲精品| 97视频在线观看这里只有精品 | 国产亚洲精品xxx| 久久久精品久久久久久| 牛牛在线精品观看免费正| 精品国产区一区二区三区在线观看| 国产四虎免费精品视频| 91精品国产91热久久久久福利| 久久亚洲精品成人综合| 国产精品视频色拍拍| 国自产偷精品不卡在线| 国产在线91精品入口| 国产精品玖玖美女张开腿让男人桶爽免费看 | 久久国产精品-久久精品| 国内精品久久久久影院薰衣草| 国产精品国产三级国产AⅤ| vvvv99日韩精品亚洲|