{"id":3048,"date":"2023-08-28T10:09:55","date_gmt":"2023-08-28T02:09:55","guid":{"rendered":"https:\/\/xinchewhd.com.cn\/?p=3048"},"modified":"2023-08-28T10:09:55","modified_gmt":"2023-08-28T02:09:55","slug":"rsa%e5%8a%a0%e5%af%86%e8%a7%a3%e5%af%86","status":"publish","type":"post","link":"https:\/\/xinchewhd.com.cn\/index.php\/uncategorized\/rsa%e5%8a%a0%e5%af%86%e8%a7%a3%e5%af%86\/","title":{"rendered":"RSA\u52a0\u5bc6\u89e3\u5bc6"},"content":{"rendered":"<link rel=\"stylesheet\" href=\"https:\/\/csdnimg.cn\/release\/blogv2\/dist\/mdeditor\/css\/editerView\/kdoc_html_views-1a98987dfd.css\">\n<link rel=\"stylesheet\" href=\"https:\/\/csdnimg.cn\/release\/blogv2\/dist\/mdeditor\/css\/editerView\/ck_htmledit_views-25cebea3f9.css\">\n<div id=\"content_views\" class=\"markdown_views prism-dracula\">\n <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"display: none;\"> <path stroke-linecap=\"round\" d=\"M5,0 0,2.5 5,5z\" id=\"raphael-marker-block\" style=\"-webkit-tap-highlight-color: rgba(0, 0, 0, 0);\"><\/path> \n <\/svg> <\/p>\n<h1><a id=\"RSA_0\"><\/a>RSA\u52a0\u5bc6\u89e3\u5bc6<\/h1>\n<p>\u975e\u5bf9\u79f0\u52a0\u5bc6\u662f\u4e00\u79cd\u5e7f\u6cdb\u4f7f\u7528\u7684\u6570\u636e\u52a0\u5bc6\u7b97\u6cd5\uff0c\u5b83\u4f7f\u7528\u4e0d\u540c\u7684\u5bc6\u94a5\u8fdb\u884c\u52a0\u5bc6\u548c\u89e3\u5bc6\u3002RSA\u52a0\u5bc6\u7b97\u6cd5\u5c31\u662f\u4e00\u79cd\u5e7f\u6cdb\u4f7f\u7528\u7684\u975e\u5bf9\u79f0\u52a0\u5bc6\u7b97\u6cd5\u3002\u5728RSA\u52a0\u5bc6\u7b97\u6cd5\u4e2d\uff0c\u5bc6\u94a5\u5206\u4e3a\u516c\u94a5\uff08\u53ef\u516c\u5f00\uff09\u548c\u79c1\u94a5\uff08\u4e0d\u516c\u5f00\uff09\u3002\u516c\u94a5\u548c\u79c1\u94a5\u662f\u6210\u5bf9\u51fa\u73b0\u7684\u3002 \u7528\u516c\u94a5\u52a0\u5bc6\u7684\u6570\u636e\uff0c\u53ea\u6709\u5bf9\u5e94\u7684\u79c1\u94a5\u53ef\u4ee5\u89e3\u5bc6\u3002 \u7528\u79c1\u94a5\u52a0\u5bc6\u7684\u6570\u636e\uff0c\u53ea\u6709\u5bf9\u5e94\u7684\u516c\u94a5\u53ef\u4ee5\u89e3\u5bc6\u3002<br \/> \u9700\u8981\u6ce8\u610f\u7684\u662f\uff0cRSA\u5bf9\u52a0\u5bc6\u89e3\u5bc6\u957f\u5ea6\u662f\u6709\u9650\u5236\u7684\uff0c\u52a0\u5bc6\u957f\u5ea6\u4e0d\u8d85\u8fc7117Byte\uff0c\u6240\u4ee5\u9700\u8981\u901a\u8fc7\u5206\u6bb5\u6765\u8fdb\u884c\u52a0\u5bc6\u89e3\u5bc6\u3002<\/p>\n<h4><a id=\"_3\"><\/a>\u751f\u6210\u5bc6\u94a5\u5bf9\uff1a<\/h4>\n<p>\u4e00\u822c\u6765\u8bf4\uff0cRSA\u5bc6\u94a5\u7684\u4f4d\u6570\u8d8a\u5927\uff0c\u5bc6\u94a5\u8d8a\u5b89\u5168\uff0c\u4f46\u52a0\u5bc6\u548c\u89e3\u5bc6\u7684\u901f\u5ea6\u4e5f\u4f1a\u53d8\u6162\u3002\u5e38\u89c1\u7684 RSA \u5bc6\u94a5\u4f4d\u6570\u9664\u4e86 1024 \u548c 2048\uff0c\u8fd8\u6709 3072\u30014096 \u7b49\uff0c\u4e5f\u6709\u5c11\u6570\u4eba\u4f7f\u7528\u66f4\u9ad8\u7684\u5bc6\u94a5\u4f4d\u6570\u3002\u4e0d\u8fc7\uff0c\u4e00\u822c\u6765\u8bf4\uff0c\u4f7f\u7528 2048 \u4f4d RSA \u5bc6\u94a5\u5c31\u8db3\u591f\u5b89\u5168\u4e86\u3002<br \/> <em><strong>\u751f\u6210\u7684\u5bc6\u94a5\u5bf9\u8bb0\u5f97\u4fdd\u5b58\u54e6\uff01\uff01\uff01<\/strong><\/em><\/p>\n<pre><code class=\"prism language-java\">\t<span class=\"token comment\">\/***\n     * \u751f\u6210\u5bc6\u94a5\u5bf9\n     * @param keySize \u5bc6\u94a5\u4f4d\u6570\n     * @ver v1.0.0\n     *\/<\/span>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">generateKeyPair<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> keySize<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<!-- --><\/span>\n        <span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n            <span class=\"token class-name\">KeyPairGenerator<\/span> keyPairGenerator <span class=\"token operator\">=<\/span> <span class=\"token class-name\">KeyPairGenerator<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getInstance<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"RSA\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            keyPairGenerator<span class=\"token punctuation\">.<\/span><span class=\"token function\">initialize<\/span><span class=\"token punctuation\">(<\/span>keySize<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token class-name\">KeyPair<\/span> keyPair <span class=\"token operator\">=<\/span> keyPairGenerator<span class=\"token punctuation\">.<\/span><span class=\"token function\">generateKeyPair<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token class-name\">PublicKey<\/span> publicKey <span class=\"token operator\">=<\/span> keyPair<span class=\"token punctuation\">.<\/span><span class=\"token function\">getPublic<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"=========PublicKey Begin==========\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Base64<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">encodeBase64String<\/span><span class=\"token punctuation\">(<\/span>publicKey<span class=\"token punctuation\">.<\/span><span class=\"token function\">getEncoded<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token class-name\">PrivateKey<\/span> privateKey <span class=\"token operator\">=<\/span> keyPair<span class=\"token punctuation\">.<\/span><span class=\"token function\">getPrivate<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"=========PrivateKey Begin==========\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Base64<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">encodeBase64String<\/span><span class=\"token punctuation\">(<\/span>privateKey<span class=\"token punctuation\">.<\/span><span class=\"token function\">getEncoded<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">NoSuchAlgorithmException<\/span> e<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n            log<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"RSA generator key Pair Error:{}\"<\/span><span class=\"token punctuation\">,<\/span> e<span class=\"token punctuation\">.<\/span><span class=\"token function\">getMessage<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token punctuation\">}<\/span>\n    <span class=\"token punctuation\">}<\/span>\n    \n<\/code><\/pre>\n<p><strong>\u9ed8\u8ba4\u5bc6\u94a5\u4f4d\u6570\u4e3a2048\uff08keySize = 2048\uff09<\/strong><\/p>\n<pre><code class=\"prism language-java\">\t<span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">String<\/span> ALGORITHM <span class=\"token operator\">=<\/span> <span class=\"token string\">\"RSA\"<\/span><span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token keyword\">int<\/span> KEY_SIZE <span class=\"token operator\">=<\/span> <span class=\"token number\">2048<\/span><span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">Integer<\/span> MAX_ENCRYPT_LENGTH <span class=\"token operator\">=<\/span> <span class=\"token number\">117<\/span><span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">String<\/span> PUBLIC_KEY <span class=\"token operator\">=<\/span> <span class=\"token string\">\"\"<\/span><span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">String<\/span> PRIVATE_KEY <span class=\"token operator\">=<\/span> <span class=\"token string\">\"\"<\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<h4><a id=\"_43\"><\/a>\u5206\u6bb5\u52a0\u5bc6\uff1a<\/h4>\n<pre><code class=\"prism language-java\">\t<span class=\"token comment\">\/**\n     * \u516c\u94a5 \u5206\u6bb5\u52a0\u5bc6--\u9ed8\u8ba4\u5bc6\u94a5\u4f4d\u6570\u4e3a2048\n     * @param plaintext \u660e\u6587\n     * @return {@link String}\n     * @ver v1.0.0\n     *\/<\/span>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token class-name\">String<\/span> <span class=\"token function\">encryptSection<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> plaintext<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n        <span class=\"token keyword\">if<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">StringUtils<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">isEmpty<\/span><span class=\"token punctuation\">(<\/span>plaintext<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<!-- --><\/span>\n            log<span class=\"token punctuation\">.<\/span><span class=\"token function\">warn<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"\u52a0\u5bc6--&gt;\u539f\u6570\u636e\u4e3a\u7a7a\uff01\uff01\uff01\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token keyword\">return<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token punctuation\">}<\/span>\n        <span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n            <span class=\"token comment\">\/\/base64\u7f16\u7801\u7684\u516c\u94a5<\/span>\n            <span class=\"token keyword\">byte<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> decoded <span class=\"token operator\">=<\/span> <span class=\"token class-name\">Base64<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">decodeBase64<\/span><span class=\"token punctuation\">(<\/span>PUBLIC_KEY<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token class-name\">RSAPublicKey<\/span> pubKey <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">RSAPublicKey<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token class-name\">KeyFactory<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getInstance<\/span><span class=\"token punctuation\">(<\/span>ALGORITHM<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">generatePublic<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token class-name\">X509EncodedKeySpec<\/span><span class=\"token punctuation\">(<\/span>decoded<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token comment\">\/\/RSA\u52a0\u5bc6<\/span>\n            <span class=\"token class-name\">Cipher<\/span> cipher <span class=\"token operator\">=<\/span> <span class=\"token class-name\">Cipher<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getInstance<\/span><span class=\"token punctuation\">(<\/span>ALGORITHM<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            cipher<span class=\"token punctuation\">.<\/span><span class=\"token function\">init<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Cipher<\/span><span class=\"token punctuation\">.<\/span>ENCRYPT_MODE<span class=\"token punctuation\">,<\/span> pubKey<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token keyword\">byte<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> bytes <span class=\"token operator\">=<\/span> plaintext<span class=\"token punctuation\">.<\/span><span class=\"token function\">getBytes<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token keyword\">int<\/span> inputLen <span class=\"token operator\">=<\/span> bytes<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">;<\/span>\n            <span class=\"token comment\">\/\/\u504f\u79fb\u91cf<\/span>\n            <span class=\"token keyword\">int<\/span> offLen <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token keyword\">int<\/span> i <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token class-name\">ByteArrayOutputStream<\/span> bops <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ByteArrayOutputStream<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token keyword\">while<\/span><span class=\"token punctuation\">(<\/span>inputLen <span class=\"token operator\">-<\/span> offLen <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<!-- --><\/span>\n                <span class=\"token keyword\">int<\/span> length <span class=\"token operator\">=<\/span> <span class=\"token class-name\">Math<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">min<\/span><span class=\"token punctuation\">(<\/span>inputLen <span class=\"token operator\">-<\/span> offLen<span class=\"token punctuation\">,<\/span> MAX_ENCRYPT_LENGTH<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n                <span class=\"token keyword\">byte<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> cache <span class=\"token operator\">=<\/span> cipher<span class=\"token punctuation\">.<\/span><span class=\"token function\">doFinal<\/span><span class=\"token punctuation\">(<\/span>bytes<span class=\"token punctuation\">,<\/span> offLen<span class=\"token punctuation\">,<\/span> length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n                bops<span class=\"token punctuation\">.<\/span><span class=\"token function\">write<\/span><span class=\"token punctuation\">(<\/span>cache<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n                i<span class=\"token operator\">++<\/span><span class=\"token punctuation\">;<\/span>\n                offLen <span class=\"token operator\">=<\/span> MAX_ENCRYPT_LENGTH <span class=\"token operator\">*<\/span> i<span class=\"token punctuation\">;<\/span>\n            <span class=\"token punctuation\">}<\/span>\n            bops<span class=\"token punctuation\">.<\/span><span class=\"token function\">close<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token keyword\">return<\/span> <span class=\"token class-name\">Base64<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">encodeBase64String<\/span><span class=\"token punctuation\">(<\/span>bops<span class=\"token punctuation\">.<\/span><span class=\"token function\">toByteArray<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Exception<\/span> e<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n            log<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"\u52a0\u5bc6\u5931\u8d25\uff1a{}\"<\/span><span class=\"token punctuation\">,<\/span>e<span class=\"token punctuation\">.<\/span><span class=\"token function\">getMessage<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token keyword\">return<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token punctuation\">}<\/span>\n    <span class=\"token punctuation\">}<\/span>\n    \n<\/code><\/pre>\n<h4><a id=\"_85\"><\/a>\u5206\u6bb5\u89e3\u5bc6\uff1a<\/h4>\n<pre><code class=\"prism language-java\">\t<span class=\"token comment\">\/**\n     * \u79c1\u94a5 \u5206\u6bb5\u89e3\u5bc6--\u9ed8\u8ba4\u5bc6\u94a5\u4f4d\u6570\u4e3a2048\n     * @param ciphertext \u5bc6\u6587\n     * @return {@link String}\n     * @ver v1.0.0\n     *\/<\/span>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token class-name\">String<\/span> <span class=\"token function\">decryptSection<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> ciphertext<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n        <span class=\"token keyword\">if<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">StringUtils<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">isEmpty<\/span><span class=\"token punctuation\">(<\/span>ciphertext<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<!-- --><\/span>\n            log<span class=\"token punctuation\">.<\/span><span class=\"token function\">warn<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"\u89e3\u5bc6--&gt;\u539f\u6570\u636e\u4e3a\u7a7a\uff01\uff01\uff01\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token keyword\">return<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token punctuation\">}<\/span>\n        <span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n            <span class=\"token comment\">\/\/base64\u7f16\u7801\u7684\u79c1\u94a5<\/span>\n            <span class=\"token keyword\">byte<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> decoded <span class=\"token operator\">=<\/span> <span class=\"token class-name\">Base64<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">decodeBase64<\/span><span class=\"token punctuation\">(<\/span>PRIVATE_KEY<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token class-name\">RSAPrivateKey<\/span> priKey <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">RSAPrivateKey<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token class-name\">KeyFactory<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getInstance<\/span><span class=\"token punctuation\">(<\/span>ALGORITHM<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">generatePrivate<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token class-name\">PKCS8EncodedKeySpec<\/span><span class=\"token punctuation\">(<\/span>decoded<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token comment\">\/\/RSA\u89e3\u5bc6<\/span>\n            <span class=\"token class-name\">Cipher<\/span> cipher <span class=\"token operator\">=<\/span> <span class=\"token class-name\">Cipher<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getInstance<\/span><span class=\"token punctuation\">(<\/span>ALGORITHM<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            cipher<span class=\"token punctuation\">.<\/span><span class=\"token function\">init<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Cipher<\/span><span class=\"token punctuation\">.<\/span>DECRYPT_MODE<span class=\"token punctuation\">,<\/span> priKey<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token comment\">\/\/64\u4f4d\u89e3\u7801\u52a0\u5bc6\u540e\u7684\u5b57\u7b26\u4e32<\/span>\n            <span class=\"token keyword\">byte<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> bytes <span class=\"token operator\">=<\/span> <span class=\"token class-name\">Base64<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">decodeBase64<\/span><span class=\"token punctuation\">(<\/span>ciphertext<span class=\"token punctuation\">.<\/span><span class=\"token function\">getBytes<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">StandardCharsets<\/span><span class=\"token punctuation\">.<\/span>UTF_8<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token keyword\">int<\/span> inputLen <span class=\"token operator\">=<\/span> bytes<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">;<\/span>\n            <span class=\"token keyword\">int<\/span> offLen <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token keyword\">int<\/span> i <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token comment\">\/\/ \u89e3\u5bc6\u957f\u5ea6<\/span>\n            <span class=\"token keyword\">int<\/span> maxDecryptLen <span class=\"token operator\">=<\/span> KEY_SIZE <span class=\"token operator\">\/<\/span> <span class=\"token number\">8<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token class-name\">ByteArrayOutputStream<\/span> byteArrayOutputStream <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ByteArrayOutputStream<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token keyword\">while<\/span><span class=\"token punctuation\">(<\/span>inputLen <span class=\"token operator\">-<\/span> offLen <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<!-- --><\/span>\n                <span class=\"token keyword\">byte<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> cache<span class=\"token punctuation\">;<\/span>\n                <span class=\"token keyword\">int<\/span> length <span class=\"token operator\">=<\/span> <span class=\"token class-name\">Math<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">min<\/span><span class=\"token punctuation\">(<\/span>inputLen <span class=\"token operator\">-<\/span> offLen<span class=\"token punctuation\">,<\/span> maxDecryptLen<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n                cache <span class=\"token operator\">=<\/span> cipher<span class=\"token punctuation\">.<\/span><span class=\"token function\">doFinal<\/span><span class=\"token punctuation\">(<\/span>bytes<span class=\"token punctuation\">,<\/span>offLen<span class=\"token punctuation\">,<\/span>length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n                byteArrayOutputStream<span class=\"token punctuation\">.<\/span><span class=\"token function\">write<\/span><span class=\"token punctuation\">(<\/span>cache<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n                i<span class=\"token operator\">++<\/span><span class=\"token punctuation\">;<\/span>\n                offLen <span class=\"token operator\">=<\/span> maxDecryptLen <span class=\"token operator\">*<\/span> i<span class=\"token punctuation\">;<\/span>\n\n            <span class=\"token punctuation\">}<\/span>\n            byteArrayOutputStream<span class=\"token punctuation\">.<\/span><span class=\"token function\">close<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token keyword\">return<\/span> byteArrayOutputStream<span class=\"token punctuation\">.<\/span><span class=\"token function\">toString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Exception<\/span> e<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n            log<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"\u89e3\u5bc6\u5931\u8d25\uff1a{}\"<\/span><span class=\"token punctuation\">,<\/span>e<span class=\"token punctuation\">.<\/span><span class=\"token function\">getMessage<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token keyword\">return<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token punctuation\">}<\/span>\n    <span class=\"token punctuation\">}<\/span>\n    \n<\/code><\/pre>\n<h4><a id=\"_131\"><\/a>\u6d4b\u8bd5\u4e00\u4e0b\uff1a<\/h4>\n<p>\u5148\u6d4b\u8bd5\u4e00\u4e0b\u5c0f\u4e8e117\u7684==&gt;<br \/> \u52a0\u5bc6\uff1a<br \/> <img decoding=\"async\" class=\"lazyload\"data-src=\"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-38\/202307311732387b7b23732.jpeg\" src=\"https:\/\/s.nmxc.ltd\/sakurairo_vision\/@2.6\/load_svg\/inload.svg\" onerror=\"imgError(this)\" alt=\"\u52a0\u5bc6\"><noscript><img decoding=\"async\" src=\"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-38\/202307311732387b7b23732.jpeg\" alt=\"\u52a0\u5bc6\"><\/noscript><br \/> \u89e3\u5bc6\uff1a<img decoding=\"async\" class=\"lazyload\"data-src=\"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-39\/202307311732398e8e37082.jpeg\" src=\"https:\/\/s.nmxc.ltd\/sakurairo_vision\/@2.6\/load_svg\/inload.svg\" onerror=\"imgError(this)\" alt=\"\u89e3\u5bc6\"><noscript><img decoding=\"async\" src=\"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-39\/202307311732398e8e37082.jpeg\" alt=\"\u89e3\u5bc6\"><\/noscript><br \/> \u518d\u6d4b\u8bd5\u4e00\u4e0b\u5927\u4e8e117\u7684==&gt;<br \/> \u52a0\u5bc6\uff1a<br \/> <img decoding=\"async\" class=\"lazyload\"data-src=\"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-40\/2023073117324031313593a.jpeg\" src=\"https:\/\/s.nmxc.ltd\/sakurairo_vision\/@2.6\/load_svg\/inload.svg\" onerror=\"imgError(this)\" alt=\"\u52a0\u5bc6\"><noscript><img decoding=\"async\" src=\"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-40\/2023073117324031313593a.jpeg\" alt=\"\u52a0\u5bc6\"><\/noscript><br \/> \u89e3\u5bc6\uff1a<br \/> <img decoding=\"async\" class=\"lazyload\"data-src=\"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-41\/202307311732418e8ea3503.jpeg\" src=\"https:\/\/s.nmxc.ltd\/sakurairo_vision\/@2.6\/load_svg\/inload.svg\" onerror=\"imgError(this)\" alt=\"\u89e3\u5bc6\"><noscript><img decoding=\"async\" src=\"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-41\/202307311732418e8ea3503.jpeg\" alt=\"\u89e3\u5bc6\"><\/noscript><\/p>\n<\/div>\n<link href=\"https:\/\/csdnimg.cn\/release\/blogv2\/dist\/mdeditor\/css\/editerView\/markdown_views-98b95bb57c.css\" rel=\"stylesheet\">\n<link href=\"https:\/\/csdnimg.cn\/release\/blogv2\/dist\/mdeditor\/css\/style-c216769e99.css\" rel=\"stylesheet\">\n<p>\u672c\u7bc7\u6587\u7ae0\u6765\u6e90\u4e8eCSDN\uff1ahttps:\/\/blog.csdn.net\/weixin_43645266\/article\/details\/131182615<\/p>\n","raw":"","protected":false},"excerpt":{"rendered":"<p>RSA\u52a0\u5bc6\u89e3\u5bc6 \u975e\u5bf9\u79f0\u52a0\u5bc6\u662f\u4e00\u79cd\u5e7f\u6cdb\u4f7f\u7528\u7684\u6570\u636e\u52a0\u5bc6\u7b97\u6cd5\uff0c\u5b83\u4f7f\u7528\u4e0d\u540c\u7684\u5bc6\u94a5\u8fdb\u884c\u52a0\u5bc6\u548c\u89e3\u5bc6\u3002RSA\u52a0\u5bc6\u7b97\u6cd5\u5c31\u662f\u4e00\u79cd\u5e7f\u6cdb\u4f7f\u7528\u7684\u975e\u5bf9\u79f0\u52a0\u5bc6 &#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"emotion":"","emotion_color":"","title_style":"","license":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-3048","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"post_thumbnail_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-38\/202307311732387b7b23732.jpeg","content_first_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-38\/202307311732387b7b23732.jpeg","post_medium_image_300":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-38\/202307311732387b7b23732.jpeg","post_thumbnail_image_624":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-38\/202307311732387b7b23732.jpeg","post_frist_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-38\/202307311732387b7b23732.jpeg","post_medium_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-38\/202307311732387b7b23732.jpeg","post_large_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-38\/202307311732387b7b23732.jpeg","post_full_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-38\/202307311732387b7b23732.jpeg","post_all_images":[{"imagesurl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-38\/202307311732387b7b23732.jpeg","id":"image0"},{"imagesurl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-38\/202307311732387b7b23732.jpeg","id":"image1"},{"imagesurl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-39\/202307311732398e8e37082.jpeg","id":"image2"},{"imagesurl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-39\/202307311732398e8e37082.jpeg","id":"image3"},{"imagesurl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-40\/2023073117324031313593a.jpeg","id":"image4"},{"imagesurl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-40\/2023073117324031313593a.jpeg","id":"image5"},{"imagesurl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-41\/202307311732418e8ea3503.jpeg","id":"image6"},{"imagesurl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/default\/nine\/2023-07-31\/17-32-41\/202307311732418e8ea3503.jpeg","id":"image7"}],"videoAdId":"","listAd":"0","listAdId":"","listAdEvery":6,"total_comments":0,"category_name":"\u672a\u5206\u7c7b","post_date":"2023-08-28","like_count":"0","praiseWord":"\u9f13\u52b1","copyright_state":"","excitationAd":"0","rewardedVideoAdId":"","detailAdId":"","detailAd":"0","enterpriseMinapp":"0","audios":[],"postImageUrl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/05\/20230519082947553.jpg","avatarurls":[],"related_posts":null,"pageviews":405,"next_post_id":2915,"next_post_title":"JVM\u5165\u95e8","previous_post_id":2981,"previous_post_title":"\u5206\u4eab\u514d\u8d39api\u63a5\u53e3","_links":{"self":[{"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/posts\/3048","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/comments?post=3048"}],"version-history":[{"count":0,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/posts\/3048\/revisions"}],"wp:attachment":[{"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/media?parent=3048"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/categories?post=3048"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/tags?post=3048"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}