Java中可以使用KeyPairGenerator類來生成公鑰和私鑰,下面是生成步驟。
// 生成RSA算法的KeyPairGenerator對象 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); // 初始化KeyPairGenerator對象,指定密鑰長度 keyPairGenerator.initialize(1024); // 生成KeyPair對象,包含公鑰和私鑰 KeyPair keyPair = keyPairGenerator.generateKeyPair(); // 獲取公鑰 PublicKey publicKey = keyPair.getPublic(); // 獲取私鑰 PrivateKey privateKey = keyPair.getPrivate();
生成的公鑰和私鑰可以使用Base64編碼轉(zhuǎn)換為字符串格式,便于傳輸和存儲(chǔ)。
// 將公鑰轉(zhuǎn)換為字符串格式 String publicKeyString = Base64.getEncoder().encodeToString(publicKey.getEncoded()); // 將私鑰轉(zhuǎn)換為字符串格式 String privateKeyString = Base64.getEncoder().encodeToString(privateKey.getEncoded());
需要注意的是,生成的公鑰和私鑰應(yīng)該妥善保存和管理,避免被不良方獲取和使用。
另外,在使用公鑰加密和私鑰解密的過程中,需要使用到Cipher類。
// 獲取Cipher對象,指定加密或解密操作,或者使用默認(rèn)方式 Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); // 使用公鑰加密數(shù)據(jù) cipher.init(Cipher.ENCRYPT_MODE, publicKey); byte[] encryptedData = cipher.doFinal(plainData); // 使用私鑰解密數(shù)據(jù) cipher.init(Cipher.DECRYPT_MODE, privateKey); byte[] decryptedData = cipher.doFinal(encryptedData);
上述代碼中,plainData是待加密的數(shù)據(jù),encryptedData是加密后的數(shù)據(jù),decryptedData是解密后的數(shù)據(jù)。