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

Posted web安全工具库

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓逆向 -- 算法基础(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");//告诉系统我用的加密码方式是HmacSHA256mac.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");//告诉系统我用的加密码方式是HmacSHA256mac1.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加密(字符串):090C0F98DE2F7F9C010BA4189B67D385D35CFEBFE3776F20FF370ABB4290BC98090C0F98DE2F7F9C010BA4189B67D385D35CFEBFE3776F20FF370ABB4290BC98

2、JS版

var CryptoJS=module.exports;function test(){    return CryptoJS.HmacSHA256("逆向有你a","12345").toString().toUpperCase();}console.log(test());

禁止非法,后果自负

欢迎关注公众号:逆向有你

欢迎关注视频号:之乎者也吧

欢迎报名安卓逆向培训,报名微信(QQ):335158573

课程列表

小肩膀安卓逆向培训

以上是关于安卓逆向 -- 算法基础(MAC)的主要内容,如果未能解决你的问题,请参考以下文章

安卓逆向 -- 算法基础(SHA)

安卓逆向 -- 算法基础(RSA)

安卓逆向 -- 算法基础(数字签名)

安卓逆向 -- 算法基础(DES与3DES)

安卓逆向 -- 算法基础(Base64与HEX)

安卓逆向 -- 算法基础(MD5)