加密算法使用(四):AES的使用
生活随笔
收集整理的這篇文章主要介紹了
加密算法使用(四):AES的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
AES是一種對稱加密方式,比DES更為安全,用一個秘鑰加密數據之后,可以用同一個秘鑰對加密后的數據解密還原,以下是一套以字符串為例子的使用全過程演示,
用到了
commons-codec.jar 1 package testEncrypt; 2 3 import java.security.InvalidKeyException; 4 import java.security.Key; 5 import java.security.NoSuchAlgorithmException; 6 import java.security.SecureRandom; 7 8 import javax.crypto.BadPaddingException; 9 import javax.crypto.Cipher; 10 import javax.crypto.IllegalBlockSizeException; 11 import javax.crypto.KeyGenerator; 12 import javax.crypto.NoSuchPaddingException; 13 import javax.crypto.SecretKey; 14 import javax.crypto.spec.SecretKeySpec; 15 16 import org.apache.commons.codec.binary.Base64; 17 //import sun.misc.BASE64Encoder; 18 public class TestAesEncrypt { 19 20 public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException { 21 //隨機生成密鑰 22 KeyGenerator keygen = KeyGenerator.getInstance("AES"); 23 //SecureRandom random = new SecureRandom(Base64.decodeBase64("abc")); 24 SecureRandom random = new SecureRandom(); 25 keygen.init(random); 26 Key key = keygen.generateKey(); 27 //獲取秘鑰字符串 28 String key64Str = Base64.encodeBase64String(key.getEncoded()); 29 //要加密的數據 30 String dataStr="da89gh9qj3ebg9babjdslgbuqgb&FTUG^(GB"; 31 System.out.println("要加密的數據:"+dataStr); 32 33 //還原秘鑰字符串到秘鑰byte數組 34 byte[] keyByteArray = Base64.decodeBase64(key64Str); 35 //重新形成秘鑰,SecretKey是Key的子類 36 SecretKey secretKey = new SecretKeySpec(keyByteArray, "AES"); 37 38 //初始化加密組件 39 Cipher cipher = Cipher.getInstance("AES"); 40 cipher.init(Cipher.ENCRYPT_MODE, secretKey); 41 42 //加密后的數據,首先將字符串轉為byte數組,然后加密,為便于保存先轉為base64 43 String encryptedDataStr = Base64.encodeBase64String(cipher.doFinal(dataStr.getBytes())); 44 System.out.println("加密后的數據:"+encryptedDataStr); 45 46 //將加密組件的模式改為解密 47 cipher.init(Cipher.DECRYPT_MODE, secretKey); 48 //和上面的加密相反,先解base64,再解密,最后將byte數組轉為字符串 49 String decodeDataStr = new String(cipher.doFinal(Base64.decodeBase64(encryptedDataStr))); 50 System.out.println("解密后的數據:"+decodeDataStr); 51 } 52 53 }?
總結
以上是生活随笔為你收集整理的加密算法使用(四):AES的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#的未来:扩展属性及更多
- 下一篇: HTML5 实现图片预览和查看原图