MD5Utils.smali
.class public Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;
.super Ljava/lang/Object;
.source "MD5Utils.java"
# static fields
.field protected static hexDigits:[C
.field protected static messagedigest:Ljava/security/MessageDigest;
# direct methods
.method static constructor <clinit>()V
.registers 4
.line 26
const/16 v0, 0x10
new-array v0, v0, [C
fill-array-data v0, :array_36
sput-object v0, Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;->hexDigits:[C
.line 28
const/4 v0, 0x0
sput-object v0, Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;->messagedigest:Ljava/security/MessageDigest;
.line 31
:try_start_c
const-string v0, "MD5"
invoke-static {v0}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest;
move-result-object v0
sput-object v0, Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;->messagedigest:Ljava/security/MessageDigest;
:try_end_14
.catch Ljava/security/NoSuchAlgorithmException; {:try_start_c .. :try_end_14} :catch_15
.line 35
goto :goto_35
.line 32
:catch_15
move-exception v0
.line 33
.local v0, "nsaex":Ljava/security/NoSuchAlgorithmException;
sget-object v1, Ljava/lang/System;->err:Ljava/io/PrintStream;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-class v3, Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;
invoke-virtual {v3}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v3, "\u521d\u59cb\u5316\u5931\u8d25\uff0cMessageDigest\u4e0d\u652f\u6301MD5Util\u3002"
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
.line 34
invoke-virtual {v0}, Ljava/security/NoSuchAlgorithmException;->printStackTrace()V
.line 36
.end local v0 # "nsaex":Ljava/security/NoSuchAlgorithmException;
:goto_35
return-void
:array_36
.array-data 2
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x61s
0x62s
0x63s
0x64s
0x65s
0x66s
.end array-data
.end method
.method public constructor <init>()V
.registers 1
.line 21
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private static appendHexPair(BLjava/lang/StringBuffer;)V
.registers 5
.param p0, "bt" # B
.param p1, "stringbuffer" # Ljava/lang/StringBuffer;
.line 123
sget-object v0, Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;->hexDigits:[C
and-int/lit16 v1, p0, 0xf0
shr-int/lit8 v1, v1, 0x4
aget-char v1, v0, v1
.line 125
.local v1, "c0":C
and-int/lit8 v2, p0, 0xf
aget-char v0, v0, v2
.line 126
.local v0, "c1":C
invoke-virtual {p1, v1}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
.line 127
invoke-virtual {p1, v0}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
.line 128
return-void
.end method
.method private static bufferToHex([B)Ljava/lang/String;
.registers 3
.param p0, "bytes" # [B
.line 110
array-length v0, p0
const/4 v1, 0x0
invoke-static {p0, v1, v0}, Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;->bufferToHex([BII)Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method private static bufferToHex([BII)Ljava/lang/String;
.registers 7
.param p0, "bytes" # [B
.param p1, "m" # I
.param p2, "n" # I
.line 114
new-instance v0, Ljava/lang/StringBuffer;
mul-int/lit8 v1, p2, 0x2
invoke-direct {v0, v1}, Ljava/lang/StringBuffer;-><init>(I)V
.line 115
.local v0, "stringbuffer":Ljava/lang/StringBuffer;
add-int v1, p1, p2
.line 116
.local v1, "k":I
move v2, p1
.local v2, "l":I
:goto_a
if-ge v2, v1, :cond_14
.line 117
aget-byte v3, p0, v2
invoke-static {v3, v0}, Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;->appendHexPair(BLjava/lang/StringBuffer;)V
.line 116
add-int/lit8 v2, v2, 0x1
goto :goto_a
.line 119
.end local v2 # "l":I
:cond_14
invoke-virtual {v0}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
move-result-object v2
return-object v2
.end method
.method public static checkPassword(Ljava/lang/String;Ljava/lang/String;)Z
.registers 4
.param p0, "password" # Ljava/lang/String;
.param p1, "md5PwdStr" # Ljava/lang/String;
.line 58
invoke-static {p0}, Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;->getMD5String(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 59
.local v0, "s":Ljava/lang/String;
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
return v1
.end method
.method public static getFileMD5String(Ljava/io/File;)Ljava/lang/String;
.registers 6
.param p0, "file" # Ljava/io/File;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 71
new-instance v0, Ljava/io/FileInputStream;
invoke-direct {v0, p0}, Ljava/io/FileInputStream;-><init>(Ljava/io/File;)V
.line 72
.local v0, "fis":Ljava/io/InputStream;
const/16 v1, 0x400
new-array v1, v1, [B
.line 74
.local v1, "buffer":[B
const/4 v2, 0x0
.line 75
.local v2, "numRead":I
:goto_a
invoke-virtual {v0, v1}, Ljava/io/InputStream;->read([B)I
move-result v3
move v2, v3
if-lez v3, :cond_18
.line 76
sget-object v3, Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;->messagedigest:Ljava/security/MessageDigest;
const/4 v4, 0x0
invoke-virtual {v3, v1, v4, v2}, Ljava/security/MessageDigest;->update([BII)V
goto :goto_a
.line 79
:cond_18
invoke-virtual {v0}, Ljava/io/InputStream;->close()V
.line 80
sget-object v3, Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;->messagedigest:Ljava/security/MessageDigest;
invoke-virtual {v3}, Ljava/security/MessageDigest;->digest()[B
move-result-object v3
invoke-static {v3}, Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;->bufferToHex([B)Ljava/lang/String;
move-result-object v3
return-object v3
.end method
.method public static getFileMD5String_old(Ljava/io/File;)Ljava/lang/String;
.registers 9
.param p0, "file" # Ljava/io/File;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 96
new-instance v0, Ljava/io/FileInputStream;
invoke-direct {v0, p0}, Ljava/io/FileInputStream;-><init>(Ljava/io/File;)V
.line 97
.local v0, "in":Ljava/io/FileInputStream;
invoke-virtual {v0}, Ljava/io/FileInputStream;->getChannel()Ljava/nio/channels/FileChannel;
move-result-object v7
.line 98
.local v7, "ch":Ljava/nio/channels/FileChannel;
sget-object v2, Ljava/nio/channels/FileChannel$MapMode;->READ_ONLY:Ljava/nio/channels/FileChannel$MapMode;
invoke-virtual {p0}, Ljava/io/File;->length()J
move-result-wide v5
const-wide/16 v3, 0x0
move-object v1, v7
invoke-virtual/range {v1 .. v6}, Ljava/nio/channels/FileChannel;->map(Ljava/nio/channels/FileChannel$MapMode;JJ)Ljava/nio/MappedByteBuffer;
move-result-object v1
.line 99
.local v1, "byteBuffer":Ljava/nio/MappedByteBuffer;
sget-object v2, Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;->messagedigest:Ljava/security/MessageDigest;
invoke-virtual {v2, v1}, Ljava/security/MessageDigest;->update(Ljava/nio/ByteBuffer;)V
.line 100
invoke-virtual {v0}, Ljava/io/FileInputStream;->close()V
.line 101
sget-object v2, Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;->messagedigest:Ljava/security/MessageDigest;
invoke-virtual {v2}, Ljava/security/MessageDigest;->digest()[B
move-result-object v2
invoke-static {v2}, Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;->bufferToHex([B)Ljava/lang/String;
move-result-object v2
return-object v2
.end method
.method public static getMD5String(Ljava/lang/String;)Ljava/lang/String;
.registers 2
.param p0, "s" # Ljava/lang/String;
.line 45
invoke-virtual {p0}, Ljava/lang/String;->getBytes()[B
move-result-object v0
invoke-static {v0}, Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;->getMD5String([B)Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method public static getMD5String([B)Ljava/lang/String;
.registers 2
.param p0, "bytes" # [B
.line 105
sget-object v0, Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;->messagedigest:Ljava/security/MessageDigest;
invoke-virtual {v0, p0}, Ljava/security/MessageDigest;->update([B)V
.line 106
sget-object v0, Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;->messagedigest:Ljava/security/MessageDigest;
invoke-virtual {v0}, Ljava/security/MessageDigest;->digest()[B
move-result-object v0
invoke-static {v0}, Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;->bufferToHex([B)Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method public static main([Ljava/lang/String;)V
.registers 13
.param p0, "args" # [Ljava/lang/String;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 131
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
.line 133
.local v0, "begin":J
new-instance v2, Ljava/io/File;
const-string v3, "C:/test.txt"
invoke-direct {v2, v3}, Ljava/io/File;-><init>(Ljava/lang/String;)V
.line 134
.local v2, "file":Ljava/io/File;
invoke-virtual {v2}, Ljava/io/File;->exists()Z
move-result v3
if-nez v3, :cond_18
.line 135
sget-object v3, Ljava/lang/System;->out:Ljava/io/PrintStream;
const-string v4, "\u4e0d\u5b58\u5728"
invoke-virtual {v3, v4}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
.line 137
:cond_18
invoke-static {v2}, Lim/tpelyyftgw/ui/hui/friendscircle/okhttphelper/MD5Utils;->getFileMD5String(Ljava/io/File;)Ljava/lang/String;
move-result-object v3
.line 141
.local v3, "md5":Ljava/lang/String;
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v4
.line 142
.local v4, "end":J
sget-object v6, Ljava/lang/System;->out:Ljava/io/PrintStream;
new-instance v7, Ljava/lang/StringBuilder;
invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
const-string v8, "md5:"
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v7, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v8, " time:"
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sub-long v8, v4, v0
const-wide/16 v10, 0x3e8
div-long/2addr v8, v10
invoke-virtual {v7, v8, v9}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
const-string v8, "s"
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v7
invoke-virtual {v6, v7}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
.line 143
sget-object v6, Ljava/lang/System;->out:Ljava/io/PrintStream;
invoke-virtual {v2}, Ljava/io/File;->getPath()Ljava/lang/String;
move-result-object v7
invoke-virtual {v6, v7}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
.line 144
return-void
.end method