在Java 8中,Base64編碼已經成為Java類庫的標准。
Base64工具類提供了一套靜態方法獲取下面三種BASE64編解碼器:基本、URL、MIME。
1、基本:
1 @Test 2 public void testBase64() throws UnsupportedEncodingException { 3 String srcStr = "-`測試Base64_$(#)*^》/,。;\"'"; 4 // 編碼 A-Za-z0-9+/ 5 String base64encodedString = Base64.getEncoder().encodeToString(srcStr.getBytes("utf-8")); 6 System.out.println(base64encodedString); // LWDmtYvor5VCYXNlNjRfJO+8iCPvvIkqXuOAiy/vvIzjgILvvJsiJw== 7 // 執行解碼 8 String base64decodedString = new String(Base64.getDecoder().decode(base64encodedString), "utf-8"); 9 // 校驗數據經過編碼解碼后是否依然完整 10 System.out.println(srcStr.equals(base64decodedString)); // true 11 }
2、URL:
1 @Test 2 public void testBase64URL() throws UnsupportedEncodingException { 3 String srcStr = "172.20.14.93:8080/console/logout?SAMLRequest=true&p=哈是&service=http%3A%2F%2F172.20.14.93%3A800"; 4 // 編碼 5 String base64encodedString = Base64.getUrlEncoder().encodeToString(srcStr.getBytes("utf-8")); 6 System.out.println(base64encodedString); 7 // out: MTcyLjIwLjE0LjkzOjgwODAvY29uc29sZS9sb2dvdXQ_U0FNTFJlcXVlc3Q9dHJ1ZSZwPeWTiOaYryZzZXJ2aWNlPWh0dHAlM0ElMkYlMkYxNzIuMjAuMTQuOTMlM0E4MDA= 8 // 執行解碼 9 String base64decodedString = new String(Base64.getUrlDecoder().decode(base64encodedString), "utf-8"); 10 // 校驗數據經過編碼解碼后是否依然完整 11 System.out.println(srcStr.equals(base64decodedString)); // true 12 }
3、MIME:
1 @Test 2 public void testBase64MIME() throws UnsupportedEncodingException { 3 String srcStr = "在Java 8中,Base64編碼已經成為Java類庫的標准。" 4 + "Java 8 內置了 Base64 編碼的編碼器和解碼器。" 5 + "Base64工具類提供了一套靜態方法獲取下面三種BASE64編解碼器:" 6 + "基本:輸出被映射到一組字符A-Za-z0-9+/,編碼不添加任何行標,輸出的解碼僅支持A-Za-z0-9+/。" 7 + "URL:輸出映射到一組字符A-Za-z0-9+_,輸出是URL和文件。" 8 + "MIME:輸出隱射到MIME友好格式。輸出每行不超過76字符,並且使用'\r'並跟隨'\n'作為分割。" 9 + "編碼輸出最后沒有行分割。"; 10 // 編碼 11 String base64encodedString = Base64.getMimeEncoder().encodeToString(srcStr.getBytes("utf-8")); 12 System.out.println(base64encodedString); 13 // 執行解碼 14 String base64decodedString = new String(Base64.getMimeDecoder().decode(base64encodedString), "utf-8"); 15 // 校驗數據經過編碼解碼后是否依然完整 16 System.out.println(srcStr.equals(base64decodedString)); // true 17 } /*out: 18 5ZyoSmF2YSA45Lit77yMQmFzZTY057yW56CB5bey57uP5oiQ5Li6SmF2Yeexu+W6k+eahOagh+WH 19 huOAgkphdmEgOCDlhoXnva7kuoYgQmFzZTY0IOe8lueggeeahOe8lueggeWZqOWSjOino+eggeWZ 20 qOOAgkJhc2U2NOW3peWFt+exu+aPkOS+m+S6huS4gOWll+mdmeaAgeaWueazleiOt+WPluS4i+md 21 ouS4ieenjUJBU0U2NOe8luino+eggeWZqO+8muWfuuacrO+8mui+k+WHuuiiq+aYoOWwhOWIsOS4 22 gOe7hOWtl+espkEtWmEtejAtOSsv77yM57yW56CB5LiN5re75Yqg5Lu75L2V6KGM5qCH77yM6L6T 23 5Ye655qE6Kej56CB5LuF5pSv5oyBQS1aYS16MC05Ky/jgIJVUkzvvJrovpPlh7rmmKDlsITliLDk 24 uIDnu4TlrZfnrKZBLVphLXowLTkrX++8jOi+k+WHuuaYr1VSTOWSjOaWh+S7tuOAgk1JTUXvvJro 25 vpPlh7rpmpDlsITliLBNSU1F5Y+L5aW95qC85byP44CC6L6T5Ye65q+P6KGM5LiN6LaF6L+HNzbl 26 rZfnrKbvvIzlubbkuJTkvb/nlKgnDSflubbot5/pmo8nCifkvZzkuLrliIblibLjgILnvJbnoIHo 27 vpPlh7rmnIDlkI7msqHmnInooYzliIblibLjgII= 28 */