<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 亚洲国产成人一区二区精品区| 午夜精品久久久久蜜桃| 91麻豆国产福利精品| 欧美亚洲精品一区二区| 久久国产乱子伦精品免费强| 国产精品综合在线| 米奇777四色精品人人爽| 国产午夜精品一区二区三区小说| 国产在线拍揄自揄视精品| 午夜影视日本亚洲欧洲精品一区| 国产情侣大量精品视频| 成人亚洲国产精品久久| porn在线精品视频| 久久九九精品国产综合喷水 | 亚洲午夜精品在线| 亚洲精品成人片在线播放| 夜夜高潮夜夜爽国产伦精品| 色欲久久久久久综合网精品| 精品无人区一区二区三区| 亚洲精品无码永久在线观看你懂的| 免费精品视频在线| 在线视频这里只有精品| 国产精品99久久久久久人| 一本久久a久久精品综合夜夜| 亚洲精品无码成人AAA片| 国产精品xxxx国产喷水亚洲国产精品无码久久一区| 伊人久久精品无码麻豆一区| 亚洲精品国产手机| 久久国产精品范冰啊| 国内精品九九久久精品| 国产免费久久精品丫丫| 国产一区二区三区日韩精品| 精品久久久久久中文字幕无碍 | 精品无码国产一区二区三区麻豆 | 国产精品美女久久久久网| 99视频精品全部在线| 久久久久久国产精品mv| 国产精品多p对白交换绿帽| 国产小视频国产精品| 久久国产精品久久精品国产| 中文字幕一精品亚洲无线一区|