java:7種Base64編碼和解碼功能詳解和效能比較
BASE64 編碼是一種常用的字元編碼,在很多地方都會用到。但base64不是安全領域下的加密解密演算法。能起到安全作用的效果很差,而且很容易破解,他核心作用應該是傳輸資料的正確性,有些閘道器或系統只能使用ASCII字元。Base64就是用來將非ASCII字元的資料轉換成ASCII字元的一種方法,而且base64特別適合在http,mime協議下快速傳輸資料。
JDK裡面實現Base64的API
在JDK1.6之前,JDK核心類一直沒有Base64的實現類,有人建議用Sun/Oracle JDK裡面的sun.misc.BASE64Encoder 和 sun.misc.BASE64Decoder,使用它們的優點就是不需要依賴第三方類庫,缺點就是可能在未來版本會被刪除(用maven編譯會發出警告),而且效能不佳,後面會有效能測試。
JDK1.6中添加了另一個Base64的實現,javax.xml.bind.DatatypeConverter兩個靜態方法parseBase64Binary 和 printBase64Binary,隱藏在javax.xml.bind包下面,不被很多開發者知道。
在Java 8在java.util包下面實現了BASE64編解碼API,而且效能不俗,API也簡單易懂,下面展示下這個類的使用例子。
java.util.Base64
該類提供了一套靜態方法獲取下面三種BASE64編解碼器:
1)Basic編碼:是標準的BASE64編碼,用於處理常規的需求
1 2 3 4 5 6 |
//
編碼
String
asB64 = Base64.getEncoder().encodeToString( "some
string" .getBytes( "utf-8" ));
System.out.println(asB64);
//
輸出為: c29tZSBzdHJpbmc=
//
解碼
byte []
asBytes = Base64.getDecoder().decode( "c29tZSBzdHJpbmc=" );
System.out.println( new
String(asBytes, "utf-8" ));
//
輸出為: some string |
2)URL編碼:使用下劃線替換URL裡面的反斜線“/”
1 2 3 4 |
String
urlEncoded = Base64.getUrlEncoder().encodeToString( "subjects?abcd" .getBytes( "utf-8" ));
System.out.println( "Using
URL Alphabet: "
+ urlEncoded);
//
輸出為:
Using
URL Alphabet: c3ViamVjdHM_YWJjZA==
|
3)MIME編碼:使用基本的字母數字產生BASE64輸出,而且對MIME格式友好:每一行輸出不超過76個字元,而且每行以“\r\n”符結束。
1 2 3 4 5 6 7 |
StringBuilder
sb = new
StringBuilder();
for
( int
t = 0 ;
t < 10 ;
++t) {
sb.append(UUID.randomUUID().toString());
}
byte []
toEncode = sb.toString().getBytes( "utf-8" );
String
mimeEncoded = Base64.getMimeEncoder().encodeToString(toEncode);
System.out.println(mimeEncoded);
|
第三方實現Base64的API
首先便是常用的Apache Commons Codec library裡面的org.apache.commons.codec.binary.Base64;
第二個便是Google Guava庫裡面的com.google.common.io.BaseEncoding.base64() 這個靜態方法;
第三個是net.iharder.Base64,這個jar包就一個類;
最後一個,號稱Base64編碼速度最快的MigBase64,而且是10年前的實現,到現在是否能保持這個稱號,測一測便知道;
Base64編碼效能測試
上面講了一共7種實現Base64編碼,Jdk裡面3種,第三方實現4種,一旦有選擇,則有必要將他們進行一次高低對比,效能測試是最直接的方式
首先來定義兩個介面
1
2
相關推薦java:7種Base64編碼和解碼功能詳解和效能比較BASE64 編碼是一種常用的字元編碼,在很多地方都會用到。但base64不是安全領域下的加密解密演算法。能起到安全作用的效果很差,而且很容易破解,他核心作用應該是傳輸資料的正確性,有些閘道器或系統只能使用ASCII字元。Base64就是用來將非ASCII字元的資料轉換成ASCII字元的一種方法,而且 java中四種訪問修飾符區別及詳解全過程HP dnv ax1 pci gda fmm utc dos rdp 客戶端程序員:即在其應用中使用數據類型的類消費者,他的目標是收集各種用來實現快速應用開發的類。 類創建者:即創建新數據類型的程序員,目標是構建類。 訪問控制存在的原因:a、讓客戶端程序員無法觸 Android關於FTP檔案上傳和下載功能詳解Android關於FTP檔案上傳和下載功能詳解 更新時間:2017年09月21日 11:41:14 作者:一諾的祕密花園 我要評論 這篇文章主要為大家詳細介紹了Android關於FTP檔案上傳和下載功能,具有一定的參考價值,感興趣 在 Java 中如何進行 BASE64 編碼和解碼解碼 clas nal upd getch 根據 數組 格式 並且 BASE64 編碼是一種常用的字符編碼,在很多地方都會用到。JDK 中提供了非常方便的 BASE64Encoder 和 BASE64Decoder,用它們可以非常方便的完成基於 BASE64 的編碼和解碼。 【H.264/AVC視訊編解碼技術詳解】二十二、熵編碼(7):語法元素的CABAC解析《H.264/AVC視訊編解碼技術詳解》視訊教程已經在“CSDN學院”上線,視訊中詳述了H.264的背景、標準協議和實現,並通過一個實戰工程的形式對H.264的標準進行解析和實現,歡迎觀看! “紙上得來終覺淺,絕知此事要躬行”,只有自己按照標準文件以程式碼的形式操作一遍,才能對視訊壓 【H.264/AVC視訊編解碼技術詳解】十五、H.264的變換編碼(二):H.264整數變換和量化的實現《H.264/AVC視訊編解碼技術詳解》視訊教程已經在“CSDN學院”上線,視訊中詳述了H.264的背景、標準協議和實現,並通過一個實戰工程的形式對H.264的標準進行解析和實現,歡迎觀看! “紙上得來終覺淺,絕知此事要躬行”,只有自己按照標準文件以程式碼 python 字元編碼與解碼——unicode、str和中文:UnicodeDecodeError: 'ascii' codec can't decode摘要:在進行python指令碼的編寫時,如果我們用python來處理網頁資料或者進行與中文字元有關的處理工作,經常出現這樣的出錯資訊:SyntaxError: Non-ASCII character '\xe6' in file ./filename.py on line java加密基礎(一) —— BASE64編碼test 分享 非對稱 學習 int ava 學習過程 public encode 工作之後第一次接觸到java加密機制,當時需求是使用RSA做數字簽名。當時看到之後一臉懵逼,就查了各種資料。 對於學習過程中我走了不少彎路,主要是因為不知道先看什麽在看什麽。下面說一 java 圖片文件Base64編碼與二進制編碼格式互相轉換jre public log 編碼 lose img csdn rac body 1 public static byte[] base64String2ByteFun(String base64Str){ 2 BASE64Decoder java:幾種集合的區別及適用場景後臺開發工作中經常遇到一些使用集合的場景,幾種集合的優缺點又老是記不住,所以寫了這篇部落格。 首先大的集合分為:List,Set,Map三種,其中List與Set是繼承自Collection,而Map不是。 List與Set的區別:List中的元素有存放順序,並且可以存放重複元素,檢索效率高 python將圖片進行base64編碼, 解碼一、將圖片進行base64編碼 import base64 img_path = 'D:xxx/file/img/juwan.jpg' with open(img_path, 'rb') as f: image_data = f.read() base64_data 微會動微信現場互動:7種小程式給公眾號導流的方法微信生態下,公眾號、小程式、社群、個人號是運營同學必不可缺的運營工具,但彼此之間如何引流呢?公眾號給小程式導流容易,小程式做裂變也比公眾號容易,但小程式的使用者流失快,怎麼通過公眾號實現粉絲留存呢? 關於小程式給公眾號導流的方法,我一口氣找了7個。 1.抽獎活動,關注公眾號領獎 活動流程如下:進入小 微會動微信現場互動:7種小程序給公眾號導流的方法支付 vpd mar 增加 ces water img log 公眾 微信生態下,公眾號、小程序、社群、個人號是運營同學必不可缺的運營工具,但彼此之間如何引流呢?公眾號給小程序導流容易,小程序做裂變也比公眾號容易,但小程序的用戶流失快,怎麽通過公眾號實現粉絲留存呢? 關於小 各種音視訊編解碼學習詳解之 編解碼學習筆記(三):Mpeg系列——Mpeg 1和Mpeg 2最近在研究音視訊編解碼這一塊兒,看到@bitbit大神寫的【各種音視訊編解碼學習詳解】這篇文章,非常感謝,佩服的五體投地。奈何大神這邊文章太長,在這裡我把它分解很多小的篇幅,方便閱讀。大神部落格傳送門:https://www.cnblogs.com/skyofbitbit base64編碼及解碼encode(input) { //編碼方法 var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; 用python實現base64編碼與解碼用到了python裡的base64模組 用法: 編碼: 1 import base64 2 a = 'HC'.decode() #將‘HC’轉為二進位制 3 b = base64.b64encode(a) #將a轉為base64編碼 4 b.decode() #從二進位制轉回 5 6 base6 【H.264/AVC視訊編解碼技術詳解】二十三、幀間預測編碼(1):幀間預測編碼的基本原理《H.264/AVC視訊編解碼技術詳解》視訊教程已經在“CSDN學院”上線,視訊中詳述了H.264的背景、標準協議和實現,並通過一個實戰工程的形式對H.264的標準進行解析和實現,歡迎觀看! “紙上得來終覺淺,絕知此事要躬行”,只有自己按照標準文件以程式碼的形式操作一遍,才能對視訊壓 java處理圖片與base64編碼互相轉換最近做專案遇到,需要在signature簽名元素中添加簽名的base64編碼,網上找了js處理,出結果了,但編碼不正確。之後用java程式碼處理(與線上轉換http://imgbase64.duoshitong.com/結果一樣),直接上程式碼,如下: package ydysz.too 【H.264/AVC視訊編解碼技術詳解】十三、熵編碼演算法(4):H.264使用CAVLC解析巨集塊的殘差資料《H.264/AVC視訊編解碼技術詳解》視訊教程已經在“CSDN學院”上線,視訊中詳述了H.264的背景、標準協議和實現,並通過一個實戰工程的形式對H.264的標準進行解析和實現,歡迎觀看! “紙上得來終覺淺,絕知此事要躬行”,只有自己按照標準文件以程式碼 java中加密演算法Base64和RSA詳解和Android手機的安全重要資訊容易被洩露的方式: 1.會從我們本地洩露 手機中毒等 2.會從伺服器洩露 伺服器人員將資訊賣出去等 3.半路上,網路傳輸的過程中 加密傳輸資料 手機連線WiFi,如果在WiFi上設定監聽資料,將關鍵的資訊攔截下來,就有可能盜取個人重要資訊 |