天天看點

安卓逆向 -- 算法基礎(MAC)

一、MAC算法

MAC算法是含有密鑰的雜湊演算法,相容MD和SHA算法,在此基礎上添加了密鑰支援,是以也被稱為Hmac算法,定義在RFC 2014中,分為兩大分支MD和SHA分支:

MD分支:Hmac-MD2、Hmac-MD4、Hmac-MD5;

SHA分支:Hmac-SHA1、Hmac-SHA256、Hmac-SHA384、Hmac-SHA512、Hmac-SHA224等;

二、代碼實作,以HmacSHA256為例

1、Java版

String bs= "逆向有你a";              ​              ​              SecretKeySpec key = new SecretKeySpec("12345".getBytes(StandardCharsets.UTF_8), "HmacSHA256");//申請一個密鑰,長度内容随便寫              Mac mac = Mac.getInstance("HmacSHA256");//告訴系統我用的加密碼方式是HmacSHA256              mac.init(key);              byte[] macres = mac.doFinal(bs.getBytes(StandardCharsets.UTF_8));//開始加密              System.out.println("HmacSHA1加密(位元組):"+Arrays.toString(macres));              System.out.println("HmacSHA1加密(字元串):"+bytes2HexString(macres));              ​              ​              SecretKeySpec key1 = new SecretKeySpec("12345".getBytes(StandardCharsets.UTF_8), "HmacSHA256");//申請一個密鑰,長度内容随便寫              Mac mac1 = Mac.getInstance("HmacSHA256");//告訴系統我用的加密碼方式是HmacSHA256              mac1.init(key1);              mac1.update("逆向".getBytes(StandardCharsets.UTF_8));              mac1.update("有你".getBytes(StandardCharsets.UTF_8));              byte[] macres1 = mac1.doFinal("a".getBytes(StandardCharsets.UTF_8));              System.out.println(bytes2HexString(macres1));              ​              運作結果:              HmacSHA1加密(位元組):[9, 12, 15, -104, -34, 47, 127, -100, 1, 11, -92, 24, -101, 103, -45, -123, -45, 92, -2, -65, -29, 119, 111, 32, -1, 55, 10, -69, 66, -112, -68, -104]              HmacSHA1加密(字元串):090C0F98DE2F7F9C010BA4189B67D385D35CFEBFE3776F20FF370ABB4290BC98              090C0F98DE2F7F9C010BA4189B67D385D35CFEBFE3776F20FF370ABB4290BC98
           

2、JS版

禁止非法,後果自負

歡迎關注公衆号:逆向有你

歡迎關注視訊号:之乎者也吧

歡迎報名安卓逆向教育訓練,報名微信(QQ):335158573

課程清單

小肩膀安卓逆向教育訓練

安卓逆向 -- 算法基礎(MAC)
安卓逆向 -- 算法基礎(MAC)

繼續閱讀