.class public Lcom/qq/e/comm/util/Md5Util; .super Ljava/lang/Object; # static fields .field private static final a:[Ljava/lang/String; # direct methods .method static constructor ()V .locals 3 const/16 v0, 0x10 new-array v0, v0, [Ljava/lang/String; const-string v1, "0" const/4 v2, 0x0 aput-object v1, v0, v2 const-string v1, "1" const/4 v2, 0x1 aput-object v1, v0, v2 const-string v1, "2" const/4 v2, 0x2 aput-object v1, v0, v2 const-string v1, "3" const/4 v2, 0x3 aput-object v1, v0, v2 const-string v1, "4" const/4 v2, 0x4 aput-object v1, v0, v2 const-string v1, "5" const/4 v2, 0x5 aput-object v1, v0, v2 const-string v1, "6" const/4 v2, 0x6 aput-object v1, v0, v2 const-string v1, "7" const/4 v2, 0x7 aput-object v1, v0, v2 const-string v1, "8" const/16 v2, 0x8 aput-object v1, v0, v2 const-string v1, "9" const/16 v2, 0x9 aput-object v1, v0, v2 const-string v1, "a" const/16 v2, 0xa aput-object v1, v0, v2 const-string v1, "b" const/16 v2, 0xb aput-object v1, v0, v2 const-string v1, "c" const/16 v2, 0xc aput-object v1, v0, v2 const-string v1, "d" const/16 v2, 0xd aput-object v1, v0, v2 const-string v1, "e" const/16 v2, 0xe aput-object v1, v0, v2 const-string v1, "f" const/16 v2, 0xf aput-object v1, v0, v2 sput-object v0, Lcom/qq/e/comm/util/Md5Util;->a:[Ljava/lang/String; return-void .end method .method public constructor ()V .locals 0 invoke-direct {p0}, Ljava/lang/Object;->()V return-void .end method .method public static byteArrayToHexString([B)Ljava/lang/String; .locals 6 new-instance v0, Ljava/lang/StringBuffer; invoke-direct {v0}, Ljava/lang/StringBuffer;->()V const/4 v1, 0x0 :goto_0 array-length v2, p0 if-ge v1, v2, :cond_1 aget-byte v2, p0, v1 if-gez v2, :cond_0 add-int/lit16 v2, v2, 0x100 :cond_0 div-int/lit8 v3, v2, 0x10 rem-int/lit8 v2, v2, 0x10 new-instance v4, Ljava/lang/StringBuilder; invoke-direct {v4}, Ljava/lang/StringBuilder;->()V sget-object v5, Lcom/qq/e/comm/util/Md5Util;->a:[Ljava/lang/String; aget-object v3, v5, v3 invoke-virtual {v4, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; sget-object v3, Lcom/qq/e/comm/util/Md5Util;->a:[Ljava/lang/String; aget-object v2, v3, v2 invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v2 invoke-virtual {v0, v2}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer; add-int/lit8 v1, v1, 0x1 goto :goto_0 :cond_1 invoke-virtual {v0}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String; move-result-object p0 return-object p0 .end method .method public static encode(Ljava/io/File;)Ljava/lang/String; .locals 4 if-nez p0, :cond_0 const-string p0, "" return-object p0 :cond_0 const/4 v0, 0x0 :try_start_0 const-string v1, "MD5" invoke-static {v1}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest; move-result-object v1 new-instance v2, Ljava/io/FileInputStream; invoke-direct {v2, p0}, Ljava/io/FileInputStream;->(Ljava/io/File;)V :try_end_0 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_3 .catchall {:try_start_0 .. :try_end_0} :catchall_1 const/16 p0, 0x400 :try_start_1 new-array p0, p0, [B :goto_0 invoke-virtual {v2, p0}, Ljava/io/FileInputStream;->read([B)I move-result v0 if-lez v0, :cond_1 const/4 v3, 0x0 invoke-virtual {v1, p0, v3, v0}, Ljava/security/MessageDigest;->update([BII)V goto :goto_0 :cond_1 invoke-virtual {v1}, Ljava/security/MessageDigest;->digest()[B move-result-object p0 invoke-static {p0}, Lcom/qq/e/comm/util/Md5Util;->byteArrayToHexString([B)Ljava/lang/String; move-result-object p0 :try_end_1 .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 .catchall {:try_start_1 .. :try_end_1} :catchall_0 :try_start_2 invoke-virtual {v2}, Ljava/io/FileInputStream;->close()V :try_end_2 .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_0 :catch_0 return-object p0 :catchall_0 move-exception p0 goto :goto_1 :catch_1 move-object v0, v2 goto :goto_2 :catchall_1 move-exception p0 move-object v2, v0 :goto_1 if-eqz v2, :cond_2 :try_start_3 invoke-virtual {v2}, Ljava/io/FileInputStream;->close()V :try_end_3 .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_2 :catch_2 :cond_2 throw p0 :catch_3 :goto_2 if-eqz v0, :cond_3 :try_start_4 invoke-virtual {v0}, Ljava/io/FileInputStream;->close()V :try_end_4 .catch Ljava/lang/Exception; {:try_start_4 .. :try_end_4} :catch_4 :catch_4 :cond_3 const-string p0, "" return-object p0 .end method .method public static encode(Ljava/lang/String;)Ljava/lang/String; .locals 2 :try_start_0 new-instance v0, Ljava/lang/String; invoke-direct {v0, p0}, Ljava/lang/String;->(Ljava/lang/String;)V :try_end_0 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 :try_start_1 const-string p0, "MD5" invoke-static {p0}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest; move-result-object p0 invoke-virtual {v0}, Ljava/lang/String;->getBytes()[B move-result-object v1 invoke-virtual {p0, v1}, Ljava/security/MessageDigest;->digest([B)[B move-result-object p0 invoke-static {p0}, Lcom/qq/e/comm/util/Md5Util;->byteArrayToHexString([B)Ljava/lang/String; move-result-object p0 :try_end_1 .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 goto :goto_0 :catch_0 const/4 v0, 0x0 :catch_1 move-object p0, v0 :goto_0 return-object p0 .end method .method public static encodeBase64String(Ljava/lang/String;)Ljava/lang/String; .locals 1 const/4 v0, 0x0 invoke-static {p0, v0}, Landroid/util/Base64;->decode(Ljava/lang/String;I)[B move-result-object p0 :try_start_0 const-string v0, "MD5" invoke-static {v0}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest; move-result-object v0 invoke-virtual {v0, p0}, Ljava/security/MessageDigest;->digest([B)[B move-result-object p0 invoke-static {p0}, Lcom/qq/e/comm/util/Md5Util;->byteArrayToHexString([B)Ljava/lang/String; move-result-object p0 :try_end_0 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 return-object p0 :catch_0 move-exception p0 const-string v0, "Exception while md5 base64String" invoke-static {v0, p0}, Lcom/qq/e/comm/util/GDTLogger;->e(Ljava/lang/String;Ljava/lang/Throwable;)V const/4 p0, 0x0 return-object p0 .end method .method public static hexStringtoByteArray(Ljava/lang/String;)[B .locals 5 invoke-virtual {p0}, Ljava/lang/String;->length()I move-result v0 rem-int/lit8 v0, v0, 0x2 if-eqz v0, :cond_0 const/4 p0, 0x0 return-object p0 :cond_0 invoke-virtual {p0}, Ljava/lang/String;->length()I move-result v0 div-int/lit8 v0, v0, 0x2 new-array v0, v0, [B const/4 v1, 0x0 :goto_0 invoke-virtual {p0}, Ljava/lang/String;->length()I move-result v2 add-int/lit8 v2, v2, -0x1 if-ge v1, v2, :cond_4 invoke-virtual {p0, v1}, Ljava/lang/String;->charAt(I)C move-result v2 add-int/lit8 v3, v1, 0x1 invoke-virtual {p0, v3}, Ljava/lang/String;->charAt(I)C move-result v3 invoke-static {v2}, Ljava/lang/Character;->toLowerCase(C)C move-result v2 invoke-static {v3}, Ljava/lang/Character;->toLowerCase(C)C move-result v3 const/16 v4, 0x39 if-gt v2, v4, :cond_1 add-int/lit8 v2, v2, -0x30 goto :goto_1 :cond_1 add-int/lit8 v2, v2, -0x61 add-int/lit8 v2, v2, 0xa :goto_1 shl-int/lit8 v2, v2, 0x4 if-gt v3, v4, :cond_2 add-int/lit8 v3, v3, -0x30 :goto_2 add-int/2addr v2, v3 goto :goto_3 :cond_2 add-int/lit8 v3, v3, -0x61 add-int/lit8 v3, v3, 0xa goto :goto_2 :goto_3 const/16 v3, 0x7f if-le v2, v3, :cond_3 add-int/lit16 v2, v2, -0x100 :cond_3 int-to-byte v2, v2 div-int/lit8 v3, v1, 0x2 aput-byte v2, v0, v3 add-int/lit8 v1, v1, 0x2 goto :goto_0 :cond_4 return-object v0 .end method