Android Base64 Md5 SHA1 編碼解碼 解析

主要講解的內容:編碼、數字摘要、加密、解密
編碼:Base64、urlEncoder、urlDecoder

當我們發送一個get請求的時候 形式如下
xxx?name=阿斯頓f&age=100

當我們在一個請求中傳遞的數據出現了中文和一些Url中定義的符號如(?&)那麼請求就無法識別

這裏要強調的是無論是get還是post在傳遞值的時候都是不支持上面那些敏感詞的傳遞的。

如果傳送的請求包含上述的信息,那麼我們就需要對我們的請求進行一次編碼封裝,以傳遞我們所需要傳遞的信息。
代碼樣例如下:

public class Test{
    String url="http://www.baidu.com?search=黑馬程序員";
    String encodeUrl=URLEncoder.encode(url);
}

//如上就完成了一次簡單的編碼,將我們要傳遞的敏感詞以非敏感詞的形式傳遞過去
注轉換後的敏感詞都是以%開始的2位16進制數表示的

那麼以上就是編碼,同樣我們需要一個解碼的過程,那麼這個方法就是

String decodeUrl=URLDecoder.decode(encodeUrl);
String decodeUrl=URLDecoder.decode(url);
//此處的兩個解碼 一個是經過加密的一個沒經過加密的但是解析的結果一樣,所以對於發回來的請求不知道是否進行解碼,都可以直接對其進行解碼,因爲其結果相同  不會報錯!

Base64:可以把一些對象轉換成String,用處:傳輸的時候不要明文傳輸
典型應用場景:上傳圖片、上傳語音 但是Base64並不是加密而是編碼

Base64的主要方法 首先我們先看下原版的方法解釋
//Base64-encode the given data and return a newly allocated String with the result.
解釋:Base64 編碼,把給定的數據返回爲一種新的以重定位變換爲結果的String對象
public static String decodeToString(String input)

下面進行一個代碼實例講解

//1.從drawable-hdpi得到一個圖片
Bitmap sourceBitmap=BitmapFactory.decodeResource(getResource{},R.mipmap.drawable);
//2.轉換成byte[]
 ByteArrayOutputStream out=new ByteArrayOutputStream();
sourceBitmap.compress(CompressFormat.PNG,100,out);
byte[] sourceBitmapByteArr=out.toByteArray();
//3.base64->String  這裏是編碼的完成 String 是可傳送的對象
String bitMapString=Base64.encodeToString(sourceBitmapByteArr,Base64.DEFAULT);

//4.base64->String->byte[]//開始解碼 在服務器端進行
byte[]  bitmapDecodeByteArr=Base64.decode(sourceBitmapString ,Base64.DEFAULT);
//5.byte[]->bitmap
Bitmap bitmap=BitmapFactory.decodeByteArray(bitmapDecodeByteArr,0,BitmapFactory.length());
//6.bitmap設置爲mIv的src,驗證是否可以這樣進行傳遞
ImageView.setImageBitmap(bitmap);

最後總結一下base64的優勢,將明文編碼一定程度的保護了明文,第二個在一定程度上壓縮了圖片的大小,降低了流量的消耗。

在說一個應用場景:將對象保存到sp中–>Base64支持把byte[]–>String只需把對象先轉換成byte[]就可以存到sp中,然後在使用的時候進行解碼就可以了.

數字摘要md5 sha1
md5:密碼一般都是需要md5,不可逆,而且1kb的文件和1tb的文件在md5編碼之後,得到的長度是一樣的。
md5的作用,或者叫做數字摘要->**確定數據未被修改
文件的唯一性**
壓縮文件本身就提供MD5比較,當你下載的文件和服務器給你的MD5進行比較時,如果沒有匹配,那麼就說明你下載的軟件被修改了!

加鹽:當上傳的數據過於簡單,考慮到截獲信息方,可能有很大的數據庫進行數據破解,如果傳送的數據例如111111那麼只要對方數據庫夠大,還是很容易對我們上傳的數據進行破解的,那麼就需要對原始數據進行加鹽如將 111111變成 !@# !@#$111111
那麼就變成了不可破解的MD5編碼 而且對於用戶透明,安全性提高了,用戶體驗未變。

SHA1的作用和MD5相同的作用
秒傳功能,在上傳之前,計算sha1值如果發現有相同的sha1值,那麼相同就可以秒傳了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章