Java and android 的反编译问题

恒拓信息科技 2014-11-26 10:11:17
小弟最近反编译 了一段android 代码(反编译以后的) 如下:

import java.security.MessageDigest;

public class h
{
public static final String a(String paramString)
{
int i = 0;
char[] arrayOfChar1 = { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70 };
try
{
byte[] arrayOfByte1 = paramString.getBytes();
MessageDigest localMessageDigest = MessageDigest.getInstance("MD5");
localMessageDigest.update(arrayOfByte1);
byte[] arrayOfByte2 = localMessageDigest.digest();
int j = arrayOfByte2.length;
char[] arrayOfChar2 = new char[j * 2];
int k = 0;
while (true)
{
if (i >= j)
return new String(arrayOfChar2);
int m = arrayOfByte2[i];
int n = k + 1;
arrayOfChar2[k] = arrayOfChar1[(0xF & m >>> 4)];
k = n + 1;
arrayOfChar2[n] = arrayOfChar1[(m & 0xF)];
i++;
}
}
catch (Exception localException)
{
localException.printStackTrace();
}
return null;
}
}


猜测 应该是 MD5加密 然后和 固定数组 异或 所得的 加密字符串,但里面 出现了一个乱码“>>>”("arrayOfChar2[k] = arrayOfChar1[(0xF & m >>> 4)];"),“>>>” 这个实在是不知道是什么意思,望哪位大侠给指点一下
下面是 对应的smali 代码:
.class public Lcom/sing/client/k/h;
.super Ljava/lang/Object;


# direct methods
.method public static final a(Ljava/lang/String;)Ljava/lang/String;
.registers 10

.prologue
const/4 v0, 0x0

.line 7
const/16 v1, 0x10

new-array v2, v1, [C

fill-array-data v2, :array_44

.line 9
:try_start_8
invoke-virtual {p0}, Ljava/lang/String;->getBytes()[B

move-result-object v1

.line 11
const-string v3, "MD5"

invoke-static {v3}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest;

move-result-object v3

.line 13
invoke-virtual {v3, v1}, Ljava/security/MessageDigest;->update([B)V

.line 15
invoke-virtual {v3}, Ljava/security/MessageDigest;->digest()[B

move-result-object v3

.line 17
array-length v4, v3

.line 18
mul-int/lit8 v1, v4, 0x2

new-array v5, v1, [C

move v1, v0

.line 20
:goto_1f
if-lt v0, v4, :cond_27

.line 25
new-instance v0, Ljava/lang/String;

invoke-direct {v0, v5}, Ljava/lang/String;-><init>([C)V

.line 28
:goto_26
return-object v0

.line 21
:cond_27
aget-byte v6, v3, v0

.line 22
add-int/lit8 v7, v1, 0x1

ushr-int/lit8 v8, v6, 0x4

and-int/lit8 v8, v8, 0xf

aget-char v8, v2, v8

aput-char v8, v5, v1

.line 23
add-int/lit8 v1, v7, 0x1

and-int/lit8 v6, v6, 0xf

aget-char v6, v2, v6

aput-char v6, v5, v7
:try_end_3b
.catch Ljava/lang/Exception; {:try_start_8 .. :try_end_3b} :catch_3e

.line 20
add-int/lit8 v0, v0, 0x1

goto :goto_1f

.line 26
:catch_3e
move-exception v0

.line 27
invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V

.line 28
const/4 v0, 0x0

goto :goto_26

.line 7
:array_44
.array-data 2
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x41s
0x42s
0x43s
0x44s
0x45s
0x46s
.end array-data
.end method


哪位大侠 帮我解释一下 那一句中的“>>>”应该是什么运算符,万分感谢!
...全文
177 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tony4geek 2014-11-27
  • 打赏
  • 举报
回复
>> 或者 >>> 上网搜搜很多。
shixitong 2014-11-27
  • 打赏
  • 举报
回复

50,549

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧