當前位置:首頁 » 編程語言 » rsaphpjava

rsaphpjava

發布時間: 2023-07-23 01:14:24

java rsa私鑰加密

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);     }   }

php跟java有什麼區別

PHP和Java是兩種完全不同的編程語言,它們有以下幾個區別:

  • 語法和編程範式:PHP是一種腳本語言,其語法類似於C語言,主要用於Web開發。而Java是一種面向對象的編程語言,其語法類似於C++,主悶乎譽要用於構建大型應用程序和服務端開發。PHP是一種解頃悄釋性語言,而Java則是一螞段種編譯型語言。

  • 執行效率:由於PHP是解釋型語言,它的執行速度比Java慢。而Java則是編譯型語言,它的執行速度比PHP快。

  • 應用場景:PHP主要用於Web開發,如網站開發、動態網頁製作等。而Java則被廣泛應用於構建大型應用程序和服務端開發,如企業應用、桌面應用、移動應用等。

  • 社區和生態環境:PHP擁有龐大的開發者社區和豐富的開源項目,如WordPress、Drupal等。而Java則擁有完善的開發工具、框架和中間件,如Spring、Hibernate、Tomcat等。

  • 學習門檻和學習曲線:由於PHP語法簡單、易於學習,所以初學者能夠較快地上手。而Java則比較復雜,需要掌握更多的知識和技能,學習曲線較為陡峭。

  • 總的來說,PHP和Java是針對不同應用場景和需求的編程語言,開發者應根據實際需求來選擇適合自己的編程語言。

③ java加密用PHP解密

先看用什麼方式的加密,拿AES來說,你需要問java要到混淆值、初始化向量與AES加密的方式如AES-192-CFB.然後直接調用openssl_decrypt方法進行解密.

openssl_decrypt('需要解密的字元串','AES-192-CFB','混淆值',0,'初始化向量'),true)

④ RSA的PHP伺服器端之間問題,怎麼解決

1 ) 如果存在從phpseclib訪問 mod &的方法,那麼問題將在更少的時間內被解決。
2 ) 在java中替換本機密碼類,它的中第三方像 Bouncy Castle 那樣的public 密鑰是一個參數。
3 ) 將伺服器端語言更改為 JSP 然後,可以在兩邊使用相同的類。

⑤ php對接java介面RSA簽名及驗簽問題!

php的胡旅PKCS1方式;java要也要改旁信成此種方式

php的褲啟凳PKCS8方式;java不用改

熱點內容
解壓帶教程 發布:2025-02-08 01:16:33 瀏覽:758
什麼是程序存儲器 發布:2025-02-08 01:05:01 瀏覽:313
解壓包手機安裝 發布:2025-02-08 00:49:29 瀏覽:960
詹雯婷訪問 發布:2025-02-08 00:42:02 瀏覽:309
php無限分類樹 發布:2025-02-08 00:42:01 瀏覽:814
clang編譯命令 發布:2025-02-08 00:41:24 瀏覽:127
數據結構c語言版演算法 發布:2025-02-08 00:28:19 瀏覽:663
python環境管理 發布:2025-02-08 00:26:51 瀏覽:999
個人簡歷源碼 發布:2025-02-08 00:26:43 瀏覽:14
html5canvas上傳圖片 發布:2025-02-08 00:20:44 瀏覽:169