Java中的加密技術主要可以分為兩種,即對稱加密和非對稱加密。
對稱加密是指加密和解密都使用同一把密鑰的加密方式。在Java中,常用的對稱加密算法有DES、AES、RC4等。
public static byte[] desEncrypt(byte[] data, String key) throws Exception { DESKeySpec dks = new DESKeySpec(key.getBytes()); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey secretKey = keyFactory.generateSecret(dks); Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE,secretKey); return cipher.doFinal(data); }
以上代碼為使用DES算法進行對稱加密的Java示例。其中,密鑰為傳入的字符串的字節數組,采用ECB模式,并對加密結果進行填充。
而非對稱加密則是指加密和解密使用不同的密鑰的加密方式。其中,公鑰用于加密,而私鑰用于解密。在Java中,常用的非對稱加密算法有RSA、DSA等。
public static byte[] rsaEncrypt(byte[] data, PublicKey publicKey) throws Exception { Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, publicKey); return cipher.doFinal(data); }
以上代碼為使用RSA算法進行非對稱加密的Java示例。其中,傳入的公鑰用于加密,采用默認填充方式。
需要注意的是,在使用非對稱加密時,由于密鑰較長,加密效率較低,因此常用于加密小數據量的信息,而對于大數據量的信息,則應采用對稱加密方式。