EncryptUtils.smali

.class public final Lcom/blankj/utilcode/util/EncryptUtils;
.super Ljava/lang/Object;
.source "EncryptUtils.java"


# static fields
.field private static final HEX_DIGITS:[C


# direct methods
.method static constructor <clinit>()V
    .registers 1

    .line 1197
    const/16 v0, 0x10

    new-array v0, v0, [C

    fill-array-data v0, :array_a

    sput-object v0, Lcom/blankj/utilcode/util/EncryptUtils;->HEX_DIGITS:[C

    return-void

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

.method private constructor <init>()V
    .registers 3

    .line 40
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 41
    new-instance v0, Ljava/lang/UnsupportedOperationException;

    const-string/jumbo v1, "u can\'t instantiate me..."

    invoke-direct {v0, v1}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V

    throw v0
.end method

.method private static base64Decode([B)[B
    .registers 2
    .param p0, "input"    # [B

    .line 1242
    const/4 v0, 0x2

    invoke-static {p0, v0}, Landroid/util/Base64;->decode([BI)[B

    move-result-object v0

    return-object v0
.end method

.method private static base64Encode([B)[B
    .registers 2
    .param p0, "input"    # [B

    .line 1238
    const/4 v0, 0x2

    invoke-static {p0, v0}, Landroid/util/Base64;->encode([BI)[B

    move-result-object v0

    return-object v0
.end method

.method private static bytes2HexString([B)Ljava/lang/String;
    .registers 8
    .param p0, "bytes"    # [B

    .line 1201
    const-string v0, ""

    if-nez p0, :cond_5

    return-object v0

    .line 1202
    :cond_5
    array-length v1, p0

    .line 1203
    .local v1, "len":I
    if-gtz v1, :cond_9

    return-object v0

    .line 1204
    :cond_9
    shl-int/lit8 v0, v1, 0x1

    new-array v0, v0, [C

    .line 1205
    .local v0, "ret":[C
    const/4 v2, 0x0

    .local v2, "i":I
    const/4 v3, 0x0

    .local v3, "j":I
    :goto_f
    if-ge v2, v1, :cond_2c

    .line 1206
    add-int/lit8 v4, v3, 0x1

    .end local v3    # "j":I
    .local v4, "j":I
    sget-object v5, Lcom/blankj/utilcode/util/EncryptUtils;->HEX_DIGITS:[C

    aget-byte v6, p0, v2

    shr-int/lit8 v6, v6, 0x4

    and-int/lit8 v6, v6, 0xf

    aget-char v6, v5, v6

    aput-char v6, v0, v3

    .line 1207
    add-int/lit8 v3, v4, 0x1

    .end local v4    # "j":I
    .restart local v3    # "j":I
    aget-byte v6, p0, v2

    and-int/lit8 v6, v6, 0xf

    aget-char v5, v5, v6

    aput-char v5, v0, v4

    .line 1205
    add-int/lit8 v2, v2, 0x1

    goto :goto_f

    .line 1209
    .end local v2    # "i":I
    .end local v3    # "j":I
    :cond_2c
    new-instance v2, Ljava/lang/String;

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

    return-object v2
.end method

.method public static decrypt3DES([B[BLjava/lang/String;[B)[B
    .registers 10
    .param p0, "data"    # [B
    .param p1, "key"    # [B
    .param p2, "transformation"    # Ljava/lang/String;
    .param p3, "iv"    # [B

    .line 821
    const-string v2, "DESede"

    const/4 v5, 0x0

    move-object v0, p0

    move-object v1, p1

    move-object v3, p2

    move-object v4, p3

    invoke-static/range {v0 .. v5}, Lcom/blankj/utilcode/util/EncryptUtils;->symmetricTemplate([B[BLjava/lang/String;Ljava/lang/String;[BZ)[B

    move-result-object v0

    return-object v0
.end method

.method public static decryptAES([B[BLjava/lang/String;[B)[B
    .registers 10
    .param p0, "data"    # [B
    .param p1, "key"    # [B
    .param p2, "transformation"    # Ljava/lang/String;
    .param p3, "iv"    # [B

    .line 927
    const-string v2, "AES"

    const/4 v5, 0x0

    move-object v0, p0

    move-object v1, p1

    move-object v3, p2

    move-object v4, p3

    invoke-static/range {v0 .. v5}, Lcom/blankj/utilcode/util/EncryptUtils;->symmetricTemplate([B[BLjava/lang/String;Ljava/lang/String;[BZ)[B

    move-result-object v0

    return-object v0
.end method

.method public static decryptBase64AES([B[BLjava/lang/String;[B)[B
    .registers 5
    .param p0, "data"    # [B
    .param p1, "key"    # [B
    .param p2, "transformation"    # Ljava/lang/String;
    .param p3, "iv"    # [B

    .line 893
    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->base64Decode([B)[B

    move-result-object v0

    invoke-static {v0, p1, p2, p3}, Lcom/blankj/utilcode/util/EncryptUtils;->decryptAES([B[BLjava/lang/String;[B)[B

    move-result-object v0

    return-object v0
.end method

.method public static decryptBase64DES([B[BLjava/lang/String;[B)[B
    .registers 5
    .param p0, "data"    # [B
    .param p1, "key"    # [B
    .param p2, "transformation"    # Ljava/lang/String;
    .param p3, "iv"    # [B

    .line 681
    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->base64Decode([B)[B

    move-result-object v0

    invoke-static {v0, p1, p2, p3}, Lcom/blankj/utilcode/util/EncryptUtils;->decryptDES([B[BLjava/lang/String;[B)[B

    move-result-object v0

    return-object v0
.end method

.method public static decryptBase64RSA([B[BILjava/lang/String;)[B
    .registers 5
    .param p0, "data"    # [B
    .param p1, "privateKey"    # [B
    .param p2, "keySize"    # I
    .param p3, "transformation"    # Ljava/lang/String;

    .line 1035
    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->base64Decode([B)[B

    move-result-object v0

    invoke-static {v0, p1, p2, p3}, Lcom/blankj/utilcode/util/EncryptUtils;->decryptRSA([B[BILjava/lang/String;)[B

    move-result-object v0

    return-object v0
.end method

.method public static decryptBase64_3DES([B[BLjava/lang/String;[B)[B
    .registers 5
    .param p0, "data"    # [B
    .param p1, "key"    # [B
    .param p2, "transformation"    # Ljava/lang/String;
    .param p3, "iv"    # [B

    .line 787
    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->base64Decode([B)[B

    move-result-object v0

    invoke-static {v0, p1, p2, p3}, Lcom/blankj/utilcode/util/EncryptUtils;->decrypt3DES([B[BLjava/lang/String;[B)[B

    move-result-object v0

    return-object v0
.end method

.method public static decryptDES([B[BLjava/lang/String;[B)[B
    .registers 10
    .param p0, "data"    # [B
    .param p1, "key"    # [B
    .param p2, "transformation"    # Ljava/lang/String;
    .param p3, "iv"    # [B

    .line 715
    const-string v2, "DES"

    const/4 v5, 0x0

    move-object v0, p0

    move-object v1, p1

    move-object v3, p2

    move-object v4, p3

    invoke-static/range {v0 .. v5}, Lcom/blankj/utilcode/util/EncryptUtils;->symmetricTemplate([B[BLjava/lang/String;Ljava/lang/String;[BZ)[B

    move-result-object v0

    return-object v0
.end method

.method public static decryptHexString3DES(Ljava/lang/String;[BLjava/lang/String;[B)[B
    .registers 5
    .param p0, "data"    # Ljava/lang/String;
    .param p1, "key"    # [B
    .param p2, "transformation"    # Ljava/lang/String;
    .param p3, "iv"    # [B

    .line 804
    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->hexString2Bytes(Ljava/lang/String;)[B

    move-result-object v0

    invoke-static {v0, p1, p2, p3}, Lcom/blankj/utilcode/util/EncryptUtils;->decrypt3DES([B[BLjava/lang/String;[B)[B

    move-result-object v0

    return-object v0
.end method

.method public static decryptHexStringAES(Ljava/lang/String;[BLjava/lang/String;[B)[B
    .registers 5
    .param p0, "data"    # Ljava/lang/String;
    .param p1, "key"    # [B
    .param p2, "transformation"    # Ljava/lang/String;
    .param p3, "iv"    # [B

    .line 910
    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->hexString2Bytes(Ljava/lang/String;)[B

    move-result-object v0

    invoke-static {v0, p1, p2, p3}, Lcom/blankj/utilcode/util/EncryptUtils;->decryptAES([B[BLjava/lang/String;[B)[B

    move-result-object v0

    return-object v0
.end method

.method public static decryptHexStringDES(Ljava/lang/String;[BLjava/lang/String;[B)[B
    .registers 5
    .param p0, "data"    # Ljava/lang/String;
    .param p1, "key"    # [B
    .param p2, "transformation"    # Ljava/lang/String;
    .param p3, "iv"    # [B

    .line 698
    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->hexString2Bytes(Ljava/lang/String;)[B

    move-result-object v0

    invoke-static {v0, p1, p2, p3}, Lcom/blankj/utilcode/util/EncryptUtils;->decryptDES([B[BLjava/lang/String;[B)[B

    move-result-object v0

    return-object v0
.end method

.method public static decryptHexStringRSA(Ljava/lang/String;[BILjava/lang/String;)[B
    .registers 5
    .param p0, "data"    # Ljava/lang/String;
    .param p1, "privateKey"    # [B
    .param p2, "keySize"    # I
    .param p3, "transformation"    # Ljava/lang/String;

    .line 1051
    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->hexString2Bytes(Ljava/lang/String;)[B

    move-result-object v0

    invoke-static {v0, p1, p2, p3}, Lcom/blankj/utilcode/util/EncryptUtils;->decryptRSA([B[BILjava/lang/String;)[B

    move-result-object v0

    return-object v0
.end method

.method public static decryptRSA([B[BILjava/lang/String;)[B
    .registers 5
    .param p0, "data"    # [B
    .param p1, "privateKey"    # [B
    .param p2, "keySize"    # I
    .param p3, "transformation"    # Ljava/lang/String;

    .line 1067
    const/4 v0, 0x0

    invoke-static {p0, p1, p2, p3, v0}, Lcom/blankj/utilcode/util/EncryptUtils;->rsaTemplate([B[BILjava/lang/String;Z)[B

    move-result-object v0

    return-object v0
.end method

.method public static encrypt3DES([B[BLjava/lang/String;[B)[B
    .registers 10
    .param p0, "data"    # [B
    .param p1, "key"    # [B
    .param p2, "transformation"    # Ljava/lang/String;
    .param p3, "iv"    # [B

    .line 770
    const-string v2, "DESede"

    const/4 v5, 0x1

    move-object v0, p0

    move-object v1, p1

    move-object v3, p2

    move-object v4, p3

    invoke-static/range {v0 .. v5}, Lcom/blankj/utilcode/util/EncryptUtils;->symmetricTemplate([B[BLjava/lang/String;Ljava/lang/String;[BZ)[B

    move-result-object v0

    return-object v0
.end method

.method public static encrypt3DES2Base64([B[BLjava/lang/String;[B)[B
    .registers 5
    .param p0, "data"    # [B
    .param p1, "key"    # [B
    .param p2, "transformation"    # Ljava/lang/String;
    .param p3, "iv"    # [B

    .line 736
    invoke-static {p0, p1, p2, p3}, Lcom/blankj/utilcode/util/EncryptUtils;->encrypt3DES([B[BLjava/lang/String;[B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->base64Encode([B)[B

    move-result-object v0

    return-object v0
.end method

.method public static encrypt3DES2HexString([B[BLjava/lang/String;[B)Ljava/lang/String;
    .registers 5
    .param p0, "data"    # [B
    .param p1, "key"    # [B
    .param p2, "transformation"    # Ljava/lang/String;
    .param p3, "iv"    # [B

    .line 753
    invoke-static {p0, p1, p2, p3}, Lcom/blankj/utilcode/util/EncryptUtils;->encrypt3DES([B[BLjava/lang/String;[B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static encryptAES([B[BLjava/lang/String;[B)[B
    .registers 10
    .param p0, "data"    # [B
    .param p1, "key"    # [B
    .param p2, "transformation"    # Ljava/lang/String;
    .param p3, "iv"    # [B

    .line 876
    const-string v2, "AES"

    const/4 v5, 0x1

    move-object v0, p0

    move-object v1, p1

    move-object v3, p2

    move-object v4, p3

    invoke-static/range {v0 .. v5}, Lcom/blankj/utilcode/util/EncryptUtils;->symmetricTemplate([B[BLjava/lang/String;Ljava/lang/String;[BZ)[B

    move-result-object v0

    return-object v0
.end method

.method public static encryptAES2Base64([B[BLjava/lang/String;[B)[B
    .registers 5
    .param p0, "data"    # [B
    .param p1, "key"    # [B
    .param p2, "transformation"    # Ljava/lang/String;
    .param p3, "iv"    # [B

    .line 842
    invoke-static {p0, p1, p2, p3}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptAES([B[BLjava/lang/String;[B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->base64Encode([B)[B

    move-result-object v0

    return-object v0
.end method

.method public static encryptAES2HexString([B[BLjava/lang/String;[B)Ljava/lang/String;
    .registers 5
    .param p0, "data"    # [B
    .param p1, "key"    # [B
    .param p2, "transformation"    # Ljava/lang/String;
    .param p3, "iv"    # [B

    .line 859
    invoke-static {p0, p1, p2, p3}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptAES([B[BLjava/lang/String;[B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static encryptDES([B[BLjava/lang/String;[B)[B
    .registers 10
    .param p0, "data"    # [B
    .param p1, "key"    # [B
    .param p2, "transformation"    # Ljava/lang/String;
    .param p3, "iv"    # [B

    .line 664
    const-string v2, "DES"

    const/4 v5, 0x1

    move-object v0, p0

    move-object v1, p1

    move-object v3, p2

    move-object v4, p3

    invoke-static/range {v0 .. v5}, Lcom/blankj/utilcode/util/EncryptUtils;->symmetricTemplate([B[BLjava/lang/String;Ljava/lang/String;[BZ)[B

    move-result-object v0

    return-object v0
.end method

.method public static encryptDES2Base64([B[BLjava/lang/String;[B)[B
    .registers 5
    .param p0, "data"    # [B
    .param p1, "key"    # [B
    .param p2, "transformation"    # Ljava/lang/String;
    .param p3, "iv"    # [B

    .line 630
    invoke-static {p0, p1, p2, p3}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptDES([B[BLjava/lang/String;[B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->base64Encode([B)[B

    move-result-object v0

    return-object v0
.end method

.method public static encryptDES2HexString([B[BLjava/lang/String;[B)Ljava/lang/String;
    .registers 5
    .param p0, "data"    # [B
    .param p1, "key"    # [B
    .param p2, "transformation"    # Ljava/lang/String;
    .param p3, "iv"    # [B

    .line 647
    invoke-static {p0, p1, p2, p3}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptDES([B[BLjava/lang/String;[B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static encryptHmacMD5([B[B)[B
    .registers 3
    .param p0, "data"    # [B
    .param p1, "key"    # [B

    .line 416
    const-string v0, "HmacMD5"

    invoke-static {p0, p1, v0}, Lcom/blankj/utilcode/util/EncryptUtils;->hmacTemplate([B[BLjava/lang/String;)[B

    move-result-object v0

    return-object v0
.end method

.method public static encryptHmacMD5ToString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    .registers 4
    .param p0, "data"    # Ljava/lang/String;
    .param p1, "key"    # Ljava/lang/String;

    .line 393
    if-eqz p0, :cond_1e

    invoke-virtual {p0}, Ljava/lang/String;->length()I

    move-result v0

    if-eqz v0, :cond_1e

    if-eqz p1, :cond_1e

    invoke-virtual {p1}, Ljava/lang/String;->length()I

    move-result v0

    if-nez v0, :cond_11

    goto :goto_1e

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

    move-result-object v0

    invoke-virtual {p1}, Ljava/lang/String;->getBytes()[B

    move-result-object v1

    invoke-static {v0, v1}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptHmacMD5ToString([B[B)Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 393
    :cond_1e
    :goto_1e
    const-string v0, ""

    return-object v0
.end method

.method public static encryptHmacMD5ToString([B[B)Ljava/lang/String;
    .registers 3
    .param p0, "data"    # [B
    .param p1, "key"    # [B

    .line 405
    invoke-static {p0, p1}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptHmacMD5([B[B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static encryptHmacSHA1([B[B)[B
    .registers 3
    .param p0, "data"    # [B
    .param p1, "key"    # [B

    .line 450
    const-string v0, "HmacSHA1"

    invoke-static {p0, p1, v0}, Lcom/blankj/utilcode/util/EncryptUtils;->hmacTemplate([B[BLjava/lang/String;)[B

    move-result-object v0

    return-object v0
.end method

.method public static encryptHmacSHA1ToString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    .registers 4
    .param p0, "data"    # Ljava/lang/String;
    .param p1, "key"    # Ljava/lang/String;

    .line 427
    if-eqz p0, :cond_1e

    invoke-virtual {p0}, Ljava/lang/String;->length()I

    move-result v0

    if-eqz v0, :cond_1e

    if-eqz p1, :cond_1e

    invoke-virtual {p1}, Ljava/lang/String;->length()I

    move-result v0

    if-nez v0, :cond_11

    goto :goto_1e

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

    move-result-object v0

    invoke-virtual {p1}, Ljava/lang/String;->getBytes()[B

    move-result-object v1

    invoke-static {v0, v1}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptHmacSHA1ToString([B[B)Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 427
    :cond_1e
    :goto_1e
    const-string v0, ""

    return-object v0
.end method

.method public static encryptHmacSHA1ToString([B[B)Ljava/lang/String;
    .registers 3
    .param p0, "data"    # [B
    .param p1, "key"    # [B

    .line 439
    invoke-static {p0, p1}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptHmacSHA1([B[B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static encryptHmacSHA224([B[B)[B
    .registers 3
    .param p0, "data"    # [B
    .param p1, "key"    # [B

    .line 484
    const-string v0, "HmacSHA224"

    invoke-static {p0, p1, v0}, Lcom/blankj/utilcode/util/EncryptUtils;->hmacTemplate([B[BLjava/lang/String;)[B

    move-result-object v0

    return-object v0
.end method

.method public static encryptHmacSHA224ToString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    .registers 4
    .param p0, "data"    # Ljava/lang/String;
    .param p1, "key"    # Ljava/lang/String;

    .line 461
    if-eqz p0, :cond_1e

    invoke-virtual {p0}, Ljava/lang/String;->length()I

    move-result v0

    if-eqz v0, :cond_1e

    if-eqz p1, :cond_1e

    invoke-virtual {p1}, Ljava/lang/String;->length()I

    move-result v0

    if-nez v0, :cond_11

    goto :goto_1e

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

    move-result-object v0

    invoke-virtual {p1}, Ljava/lang/String;->getBytes()[B

    move-result-object v1

    invoke-static {v0, v1}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptHmacSHA224ToString([B[B)Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 461
    :cond_1e
    :goto_1e
    const-string v0, ""

    return-object v0
.end method

.method public static encryptHmacSHA224ToString([B[B)Ljava/lang/String;
    .registers 3
    .param p0, "data"    # [B
    .param p1, "key"    # [B

    .line 473
    invoke-static {p0, p1}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptHmacSHA224([B[B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static encryptHmacSHA256([B[B)[B
    .registers 3
    .param p0, "data"    # [B
    .param p1, "key"    # [B

    .line 518
    const-string v0, "HmacSHA256"

    invoke-static {p0, p1, v0}, Lcom/blankj/utilcode/util/EncryptUtils;->hmacTemplate([B[BLjava/lang/String;)[B

    move-result-object v0

    return-object v0
.end method

.method public static encryptHmacSHA256ToString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    .registers 4
    .param p0, "data"    # Ljava/lang/String;
    .param p1, "key"    # Ljava/lang/String;

    .line 495
    if-eqz p0, :cond_1e

    invoke-virtual {p0}, Ljava/lang/String;->length()I

    move-result v0

    if-eqz v0, :cond_1e

    if-eqz p1, :cond_1e

    invoke-virtual {p1}, Ljava/lang/String;->length()I

    move-result v0

    if-nez v0, :cond_11

    goto :goto_1e

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

    move-result-object v0

    invoke-virtual {p1}, Ljava/lang/String;->getBytes()[B

    move-result-object v1

    invoke-static {v0, v1}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptHmacSHA256ToString([B[B)Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 495
    :cond_1e
    :goto_1e
    const-string v0, ""

    return-object v0
.end method

.method public static encryptHmacSHA256ToString([B[B)Ljava/lang/String;
    .registers 3
    .param p0, "data"    # [B
    .param p1, "key"    # [B

    .line 507
    invoke-static {p0, p1}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptHmacSHA256([B[B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static encryptHmacSHA384([B[B)[B
    .registers 3
    .param p0, "data"    # [B
    .param p1, "key"    # [B

    .line 552
    const-string v0, "HmacSHA384"

    invoke-static {p0, p1, v0}, Lcom/blankj/utilcode/util/EncryptUtils;->hmacTemplate([B[BLjava/lang/String;)[B

    move-result-object v0

    return-object v0
.end method

.method public static encryptHmacSHA384ToString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    .registers 4
    .param p0, "data"    # Ljava/lang/String;
    .param p1, "key"    # Ljava/lang/String;

    .line 529
    if-eqz p0, :cond_1e

    invoke-virtual {p0}, Ljava/lang/String;->length()I

    move-result v0

    if-eqz v0, :cond_1e

    if-eqz p1, :cond_1e

    invoke-virtual {p1}, Ljava/lang/String;->length()I

    move-result v0

    if-nez v0, :cond_11

    goto :goto_1e

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

    move-result-object v0

    invoke-virtual {p1}, Ljava/lang/String;->getBytes()[B

    move-result-object v1

    invoke-static {v0, v1}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptHmacSHA384ToString([B[B)Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 529
    :cond_1e
    :goto_1e
    const-string v0, ""

    return-object v0
.end method

.method public static encryptHmacSHA384ToString([B[B)Ljava/lang/String;
    .registers 3
    .param p0, "data"    # [B
    .param p1, "key"    # [B

    .line 541
    invoke-static {p0, p1}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptHmacSHA384([B[B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static encryptHmacSHA512([B[B)[B
    .registers 3
    .param p0, "data"    # [B
    .param p1, "key"    # [B

    .line 586
    const-string v0, "HmacSHA512"

    invoke-static {p0, p1, v0}, Lcom/blankj/utilcode/util/EncryptUtils;->hmacTemplate([B[BLjava/lang/String;)[B

    move-result-object v0

    return-object v0
.end method

.method public static encryptHmacSHA512ToString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    .registers 4
    .param p0, "data"    # Ljava/lang/String;
    .param p1, "key"    # Ljava/lang/String;

    .line 563
    if-eqz p0, :cond_1e

    invoke-virtual {p0}, Ljava/lang/String;->length()I

    move-result v0

    if-eqz v0, :cond_1e

    if-eqz p1, :cond_1e

    invoke-virtual {p1}, Ljava/lang/String;->length()I

    move-result v0

    if-nez v0, :cond_11

    goto :goto_1e

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

    move-result-object v0

    invoke-virtual {p1}, Ljava/lang/String;->getBytes()[B

    move-result-object v1

    invoke-static {v0, v1}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptHmacSHA512ToString([B[B)Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 563
    :cond_1e
    :goto_1e
    const-string v0, ""

    return-object v0
.end method

.method public static encryptHmacSHA512ToString([B[B)Ljava/lang/String;
    .registers 3
    .param p0, "data"    # [B
    .param p1, "key"    # [B

    .line 575
    invoke-static {p0, p1}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptHmacSHA512([B[B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static encryptMD2([B)[B
    .registers 2
    .param p0, "data"    # [B

    .line 76
    const-string v0, "MD2"

    invoke-static {p0, v0}, Lcom/blankj/utilcode/util/EncryptUtils;->hashTemplate([BLjava/lang/String;)[B

    move-result-object v0

    return-object v0
.end method

.method public static encryptMD2ToString(Ljava/lang/String;)Ljava/lang/String;
    .registers 2
    .param p0, "data"    # Ljava/lang/String;

    .line 55
    if-eqz p0, :cond_12

    invoke-virtual {p0}, Ljava/lang/String;->length()I

    move-result v0

    if-nez v0, :cond_9

    goto :goto_12

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

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptMD2ToString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 55
    :cond_12
    :goto_12
    const-string v0, ""

    return-object v0
.end method

.method public static encryptMD2ToString([B)Ljava/lang/String;
    .registers 2
    .param p0, "data"    # [B

    .line 66
    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptMD2([B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static encryptMD5([B)[B
    .registers 2
    .param p0, "data"    # [B

    .line 138
    const-string v0, "MD5"

    invoke-static {p0, v0}, Lcom/blankj/utilcode/util/EncryptUtils;->hashTemplate([BLjava/lang/String;)[B

    move-result-object v0

    return-object v0
.end method

.method public static encryptMD5File(Ljava/io/File;)[B
    .registers 7
    .param p0, "file"    # Ljava/io/File;

    .line 180
    const/4 v0, 0x0

    if-nez p0, :cond_4

    return-object v0

    .line 181
    :cond_4
    const/4 v1, 0x0

    .line 184
    .local v1, "fis":Ljava/io/FileInputStream;
    :try_start_5
    new-instance v2, Ljava/io/FileInputStream;

    invoke-direct {v2, p0}, Ljava/io/FileInputStream;-><init>(Ljava/io/File;)V

    move-object v1, v2

    .line 185
    const-string v2, "MD5"

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

    move-result-object v2

    .line 186
    .local v2, "md":Ljava/security/MessageDigest;
    new-instance v3, Ljava/security/DigestInputStream;

    invoke-direct {v3, v1, v2}, Ljava/security/DigestInputStream;-><init>(Ljava/io/InputStream;Ljava/security/MessageDigest;)V

    .line 187
    .local v3, "digestInputStream":Ljava/security/DigestInputStream;
    const/high16 v4, 0x40000

    new-array v4, v4, [B

    .line 189
    .local v4, "buffer":[B
    :cond_1a
    invoke-virtual {v3, v4}, Ljava/security/DigestInputStream;->read([B)I

    move-result v5

    if-gtz v5, :cond_1a

    .line 191
    invoke-virtual {v3}, Ljava/security/DigestInputStream;->getMessageDigest()Ljava/security/MessageDigest;

    move-result-object v5

    move-object v2, v5

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

    move-result-object v0
    :try_end_29
    .catch Ljava/security/NoSuchAlgorithmException; {:try_start_5 .. :try_end_29} :catch_37
    .catch Ljava/io/IOException; {:try_start_5 .. :try_end_29} :catch_35
    .catchall {:try_start_5 .. :try_end_29} :catchall_33

    .line 198
    nop

    .line 199
    :try_start_2a
    invoke-virtual {v1}, Ljava/io/FileInputStream;->close()V
    :try_end_2d
    .catch Ljava/io/IOException; {:try_start_2a .. :try_end_2d} :catch_2e

    .line 203
    goto :goto_32

    .line 201
    :catch_2e
    move-exception v5

    .line 202
    .local v5, "e":Ljava/io/IOException;
    invoke-virtual {v5}, Ljava/io/IOException;->printStackTrace()V

    .line 192
    .end local v5    # "e":Ljava/io/IOException;
    :goto_32
    return-object v0

    .line 197
    .end local v2    # "md":Ljava/security/MessageDigest;
    .end local v3    # "digestInputStream":Ljava/security/DigestInputStream;
    .end local v4    # "buffer":[B
    :catchall_33
    move-exception v0

    goto :goto_49

    .line 193
    :catch_35
    move-exception v2

    goto :goto_38

    :catch_37
    move-exception v2

    .line 194
    .local v2, "e":Ljava/lang/Exception;
    :goto_38
    :try_start_38
    invoke-virtual {v2}, Ljava/lang/Exception;->printStackTrace()V
    :try_end_3b
    .catchall {:try_start_38 .. :try_end_3b} :catchall_33

    .line 195
    nop

    .line 198
    if-eqz v1, :cond_47

    .line 199
    :try_start_3e
    invoke-virtual {v1}, Ljava/io/FileInputStream;->close()V
    :try_end_41
    .catch Ljava/io/IOException; {:try_start_3e .. :try_end_41} :catch_42

    goto :goto_47

    .line 201
    :catch_42
    move-exception v3

    .line 202
    .local v3, "e":Ljava/io/IOException;
    invoke-virtual {v3}, Ljava/io/IOException;->printStackTrace()V

    goto :goto_48

    .line 203
    .end local v3    # "e":Ljava/io/IOException;
    :cond_47
    :goto_47
    nop

    .line 195
    :goto_48
    return-object v0

    .line 198
    .end local v2    # "e":Ljava/lang/Exception;
    :goto_49
    if-eqz v1, :cond_54

    .line 199
    :try_start_4b
    invoke-virtual {v1}, Ljava/io/FileInputStream;->close()V
    :try_end_4e
    .catch Ljava/io/IOException; {:try_start_4b .. :try_end_4e} :catch_4f

    goto :goto_54

    .line 201
    :catch_4f
    move-exception v2

    .line 202
    .local v2, "e":Ljava/io/IOException;
    invoke-virtual {v2}, Ljava/io/IOException;->printStackTrace()V

    goto :goto_55

    .line 203
    .end local v2    # "e":Ljava/io/IOException;
    :cond_54
    :goto_54
    nop

    .line 204
    :goto_55
    goto :goto_57

    :goto_56
    throw v0

    :goto_57
    goto :goto_56
.end method

.method public static encryptMD5File(Ljava/lang/String;)[B
    .registers 3
    .param p0, "filePath"    # Ljava/lang/String;

    .line 159
    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->isSpace(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_8

    const/4 v0, 0x0

    goto :goto_d

    :cond_8
    new-instance v0, Ljava/io/File;

    invoke-direct {v0, p0}, Ljava/io/File;-><init>(Ljava/lang/String;)V

    .line 160
    .local v0, "file":Ljava/io/File;
    :goto_d
    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptMD5File(Ljava/io/File;)[B

    move-result-object v1

    return-object v1
.end method

.method public static encryptMD5File2String(Ljava/io/File;)Ljava/lang/String;
    .registers 2
    .param p0, "file"    # Ljava/io/File;

    .line 170
    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptMD5File(Ljava/io/File;)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static encryptMD5File2String(Ljava/lang/String;)Ljava/lang/String;
    .registers 3
    .param p0, "filePath"    # Ljava/lang/String;

    .line 148
    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->isSpace(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_8

    const/4 v0, 0x0

    goto :goto_d

    :cond_8
    new-instance v0, Ljava/io/File;

    invoke-direct {v0, p0}, Ljava/io/File;-><init>(Ljava/lang/String;)V

    .line 149
    .local v0, "file":Ljava/io/File;
    :goto_d
    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptMD5File2String(Ljava/io/File;)Ljava/lang/String;

    move-result-object v1

    return-object v1
.end method

.method public static encryptMD5ToString(Ljava/lang/String;)Ljava/lang/String;
    .registers 2
    .param p0, "data"    # Ljava/lang/String;

    .line 86
    if-eqz p0, :cond_12

    invoke-virtual {p0}, Ljava/lang/String;->length()I

    move-result v0

    if-nez v0, :cond_9

    goto :goto_12

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

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptMD5ToString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 86
    :cond_12
    :goto_12
    const-string v0, ""

    return-object v0
.end method

.method public static encryptMD5ToString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    .registers 3
    .param p0, "data"    # Ljava/lang/String;
    .param p1, "salt"    # Ljava/lang/String;

    .line 98
    if-nez p0, :cond_7

    if-nez p1, :cond_7

    const-string v0, ""

    return-object v0

    .line 99
    :cond_7
    if-nez p1, :cond_16

    invoke-virtual {p0}, Ljava/lang/String;->getBytes()[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptMD5([B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 100
    :cond_16
    if-nez p0, :cond_25

    invoke-virtual {p1}, Ljava/lang/String;->getBytes()[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptMD5([B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 101
    :cond_25
    new-instance v0, Ljava/lang/StringBuilder;

    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/String;->getBytes()[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptMD5([B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static encryptMD5ToString([B)Ljava/lang/String;
    .registers 2
    .param p0, "data"    # [B

    .line 111
    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptMD5([B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static encryptMD5ToString([B[B)Ljava/lang/String;
    .registers 6
    .param p0, "data"    # [B
    .param p1, "salt"    # [B

    .line 122
    if-nez p0, :cond_7

    if-nez p1, :cond_7

    const-string v0, ""

    return-object v0

    .line 123
    :cond_7
    if-nez p1, :cond_12

    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptMD5([B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 124
    :cond_12
    if-nez p0, :cond_1d

    invoke-static {p1}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptMD5([B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 125
    :cond_1d
    array-length v0, p0

    array-length v1, p1

    add-int/2addr v0, v1

    new-array v0, v0, [B

    .line 126
    .local v0, "dataSalt":[B
    array-length v1, p0

    const/4 v2, 0x0

    invoke-static {p0, v2, v0, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 127
    array-length v1, p0

    array-length v3, p1

    invoke-static {p1, v2, v0, v1, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 128
    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptMD5([B)[B

    move-result-object v1

    invoke-static {v1}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v1

    return-object v1
.end method

.method public static encryptRSA([B[BILjava/lang/String;)[B
    .registers 5
    .param p0, "data"    # [B
    .param p1, "publicKey"    # [B
    .param p2, "keySize"    # I
    .param p3, "transformation"    # Ljava/lang/String;

    .line 1019
    const/4 v0, 0x1

    invoke-static {p0, p1, p2, p3, v0}, Lcom/blankj/utilcode/util/EncryptUtils;->rsaTemplate([B[BILjava/lang/String;Z)[B

    move-result-object v0

    return-object v0
.end method

.method public static encryptRSA2Base64([B[BILjava/lang/String;)[B
    .registers 5
    .param p0, "data"    # [B
    .param p1, "publicKey"    # [B
    .param p2, "keySize"    # I
    .param p3, "transformation"    # Ljava/lang/String;

    .line 987
    invoke-static {p0, p1, p2, p3}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptRSA([B[BILjava/lang/String;)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->base64Encode([B)[B

    move-result-object v0

    return-object v0
.end method

.method public static encryptRSA2HexString([B[BILjava/lang/String;)Ljava/lang/String;
    .registers 5
    .param p0, "data"    # [B
    .param p1, "publicKey"    # [B
    .param p2, "keySize"    # I
    .param p3, "transformation"    # Ljava/lang/String;

    .line 1003
    invoke-static {p0, p1, p2, p3}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptRSA([B[BILjava/lang/String;)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static encryptSHA1([B)[B
    .registers 2
    .param p0, "data"    # [B

    .line 235
    const-string v0, "SHA-1"

    invoke-static {p0, v0}, Lcom/blankj/utilcode/util/EncryptUtils;->hashTemplate([BLjava/lang/String;)[B

    move-result-object v0

    return-object v0
.end method

.method public static encryptSHA1ToString(Ljava/lang/String;)Ljava/lang/String;
    .registers 2
    .param p0, "data"    # Ljava/lang/String;

    .line 214
    if-eqz p0, :cond_12

    invoke-virtual {p0}, Ljava/lang/String;->length()I

    move-result v0

    if-nez v0, :cond_9

    goto :goto_12

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

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptSHA1ToString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 214
    :cond_12
    :goto_12
    const-string v0, ""

    return-object v0
.end method

.method public static encryptSHA1ToString([B)Ljava/lang/String;
    .registers 2
    .param p0, "data"    # [B

    .line 225
    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptSHA1([B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static encryptSHA224([B)[B
    .registers 2
    .param p0, "data"    # [B

    .line 266
    const-string v0, "SHA224"

    invoke-static {p0, v0}, Lcom/blankj/utilcode/util/EncryptUtils;->hashTemplate([BLjava/lang/String;)[B

    move-result-object v0

    return-object v0
.end method

.method public static encryptSHA224ToString(Ljava/lang/String;)Ljava/lang/String;
    .registers 2
    .param p0, "data"    # Ljava/lang/String;

    .line 245
    if-eqz p0, :cond_12

    invoke-virtual {p0}, Ljava/lang/String;->length()I

    move-result v0

    if-nez v0, :cond_9

    goto :goto_12

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

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptSHA224ToString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 245
    :cond_12
    :goto_12
    const-string v0, ""

    return-object v0
.end method

.method public static encryptSHA224ToString([B)Ljava/lang/String;
    .registers 2
    .param p0, "data"    # [B

    .line 256
    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptSHA224([B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static encryptSHA256([B)[B
    .registers 2
    .param p0, "data"    # [B

    .line 297
    const-string v0, "SHA-256"

    invoke-static {p0, v0}, Lcom/blankj/utilcode/util/EncryptUtils;->hashTemplate([BLjava/lang/String;)[B

    move-result-object v0

    return-object v0
.end method

.method public static encryptSHA256ToString(Ljava/lang/String;)Ljava/lang/String;
    .registers 2
    .param p0, "data"    # Ljava/lang/String;

    .line 276
    if-eqz p0, :cond_12

    invoke-virtual {p0}, Ljava/lang/String;->length()I

    move-result v0

    if-nez v0, :cond_9

    goto :goto_12

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

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptSHA256ToString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 276
    :cond_12
    :goto_12
    const-string v0, ""

    return-object v0
.end method

.method public static encryptSHA256ToString([B)Ljava/lang/String;
    .registers 2
    .param p0, "data"    # [B

    .line 287
    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptSHA256([B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static encryptSHA384([B)[B
    .registers 2
    .param p0, "data"    # [B

    .line 328
    const-string v0, "SHA-384"

    invoke-static {p0, v0}, Lcom/blankj/utilcode/util/EncryptUtils;->hashTemplate([BLjava/lang/String;)[B

    move-result-object v0

    return-object v0
.end method

.method public static encryptSHA384ToString(Ljava/lang/String;)Ljava/lang/String;
    .registers 2
    .param p0, "data"    # Ljava/lang/String;

    .line 307
    if-eqz p0, :cond_12

    invoke-virtual {p0}, Ljava/lang/String;->length()I

    move-result v0

    if-nez v0, :cond_9

    goto :goto_12

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

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptSHA384ToString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 307
    :cond_12
    :goto_12
    const-string v0, ""

    return-object v0
.end method

.method public static encryptSHA384ToString([B)Ljava/lang/String;
    .registers 2
    .param p0, "data"    # [B

    .line 318
    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptSHA384([B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static encryptSHA512([B)[B
    .registers 2
    .param p0, "data"    # [B

    .line 359
    const-string v0, "SHA-512"

    invoke-static {p0, v0}, Lcom/blankj/utilcode/util/EncryptUtils;->hashTemplate([BLjava/lang/String;)[B

    move-result-object v0

    return-object v0
.end method

.method public static encryptSHA512ToString(Ljava/lang/String;)Ljava/lang/String;
    .registers 2
    .param p0, "data"    # Ljava/lang/String;

    .line 338
    if-eqz p0, :cond_12

    invoke-virtual {p0}, Ljava/lang/String;->length()I

    move-result v0

    if-nez v0, :cond_9

    goto :goto_12

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

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptSHA512ToString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 338
    :cond_12
    :goto_12
    const-string v0, ""

    return-object v0
.end method

.method public static encryptSHA512ToString([B)Ljava/lang/String;
    .registers 2
    .param p0, "data"    # [B

    .line 349
    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->encryptSHA512([B)[B

    move-result-object v0

    invoke-static {v0}, Lcom/blankj/utilcode/util/EncryptUtils;->bytes2HexString([B)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method private static hashTemplate([BLjava/lang/String;)[B
    .registers 4
    .param p0, "data"    # [B
    .param p1, "algorithm"    # Ljava/lang/String;

    .line 370
    const/4 v0, 0x0

    if-eqz p0, :cond_18

    array-length v1, p0

    if-gtz v1, :cond_7

    goto :goto_18

    .line 372
    :cond_7
    :try_start_7
    invoke-static {p1}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest;

    move-result-object v1

    .line 373
    .local v1, "md":Ljava/security/MessageDigest;
    invoke-virtual {v1, p0}, Ljava/security/MessageDigest;->update([B)V

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

    move-result-object v0
    :try_end_12
    .catch Ljava/security/NoSuchAlgorithmException; {:try_start_7 .. :try_end_12} :catch_13

    return-object v0

    .line 375
    .end local v1    # "md":Ljava/security/MessageDigest;
    :catch_13
    move-exception v1

    .line 376
    .local v1, "e":Ljava/security/NoSuchAlgorithmException;
    invoke-virtual {v1}, Ljava/security/NoSuchAlgorithmException;->printStackTrace()V

    .line 377
    return-object v0

    .line 370
    .end local v1    # "e":Ljava/security/NoSuchAlgorithmException;
    :cond_18
    :goto_18
    return-object v0
.end method

.method private static hex2Dec(C)I
    .registers 2
    .param p0, "hexChar"    # C

    .line 1228
    const/16 v0, 0x30

    if-lt p0, v0, :cond_b

    const/16 v0, 0x39

    if-gt p0, v0, :cond_b

    .line 1229
    add-int/lit8 v0, p0, -0x30

    return v0

    .line 1230
    :cond_b
    const/16 v0, 0x41

    if-lt p0, v0, :cond_18

    const/16 v0, 0x46

    if-gt p0, v0, :cond_18

    .line 1231
    add-int/lit8 v0, p0, -0x41

    add-int/lit8 v0, v0, 0xa

    return v0

    .line 1233
    :cond_18
    new-instance v0, Ljava/lang/IllegalArgumentException;

    invoke-direct {v0}, Ljava/lang/IllegalArgumentException;-><init>()V

    throw v0
.end method

.method private static hexString2Bytes(Ljava/lang/String;)[B
    .registers 8
    .param p0, "hexString"    # Ljava/lang/String;

    .line 1213
    invoke-static {p0}, Lcom/blankj/utilcode/util/EncryptUtils;->isSpace(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_8

    const/4 v0, 0x0

    return-object v0

    .line 1214
    :cond_8
    invoke-virtual {p0}, Ljava/lang/String;->length()I

    move-result v0

    .line 1215
    .local v0, "len":I
    rem-int/lit8 v1, v0, 0x2

    if-eqz v1, :cond_23

    .line 1216
    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, "0"

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p0

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

    .line 1219
    :cond_23
    invoke-virtual {p0}, Ljava/lang/String;->toUpperCase()Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/String;->toCharArray()[C

    move-result-object v1

    .line 1220
    .local v1, "hexBytes":[C
    shr-int/lit8 v2, v0, 0x1

    new-array v2, v2, [B

    .line 1221
    .local v2, "ret":[B
    const/4 v3, 0x0

    .local v3, "i":I
    :goto_30
    if-ge v3, v0, :cond_4b

    .line 1222
    shr-int/lit8 v4, v3, 0x1

    aget-char v5, v1, v3

    invoke-static {v5}, Lcom/blankj/utilcode/util/EncryptUtils;->hex2Dec(C)I

    move-result v5

    shl-int/lit8 v5, v5, 0x4

    add-int/lit8 v6, v3, 0x1

    aget-char v6, v1, v6

    invoke-static {v6}, Lcom/blankj/utilcode/util/EncryptUtils;->hex2Dec(C)I

    move-result v6

    or-int/2addr v5, v6

    int-to-byte v5, v5

    aput-byte v5, v2, v4

    .line 1221
    add-int/lit8 v3, v3, 0x2

    goto :goto_30

    .line 1224
    .end local v3    # "i":I
    :cond_4b
    return-object v2
.end method

.method private static hmacTemplate([B[BLjava/lang/String;)[B
    .registers 6
    .param p0, "data"    # [B
    .param p1, "key"    # [B
    .param p2, "algorithm"    # Ljava/lang/String;

    .line 600
    const/4 v0, 0x0

    if-eqz p0, :cond_24

    array-length v1, p0

    if-eqz v1, :cond_24

    if-eqz p1, :cond_24

    array-length v1, p1

    if-nez v1, :cond_c

    goto :goto_24

    .line 602
    :cond_c
    :try_start_c
    new-instance v1, Ljavax/crypto/spec/SecretKeySpec;

    invoke-direct {v1, p1, p2}, Ljavax/crypto/spec/SecretKeySpec;-><init>([BLjava/lang/String;)V

    .line 603
    .local v1, "secretKey":Ljavax/crypto/spec/SecretKeySpec;
    invoke-static {p2}, Ljavax/crypto/Mac;->getInstance(Ljava/lang/String;)Ljavax/crypto/Mac;

    move-result-object v2

    .line 604
    .local v2, "mac":Ljavax/crypto/Mac;
    invoke-virtual {v2, v1}, Ljavax/crypto/Mac;->init(Ljava/security/Key;)V

    .line 605
    invoke-virtual {v2, p0}, Ljavax/crypto/Mac;->doFinal([B)[B

    move-result-object v0
    :try_end_1c
    .catch Ljava/security/InvalidKeyException; {:try_start_c .. :try_end_1c} :catch_1f
    .catch Ljava/security/NoSuchAlgorithmException; {:try_start_c .. :try_end_1c} :catch_1d

    return-object v0

    .line 606
    .end local v1    # "secretKey":Ljavax/crypto/spec/SecretKeySpec;
    .end local v2    # "mac":Ljavax/crypto/Mac;
    :catch_1d
    move-exception v1

    goto :goto_20

    :catch_1f
    move-exception v1

    .line 607
    .local v1, "e":Ljava/security/GeneralSecurityException;
    :goto_20
    invoke-virtual {v1}, Ljava/security/GeneralSecurityException;->printStackTrace()V

    .line 608
    return-object v0

    .line 600
    .end local v1    # "e":Ljava/security/GeneralSecurityException;
    :cond_24
    :goto_24
    return-object v0
.end method

.method private static isSpace(Ljava/lang/String;)Z
    .registers 5
    .param p0, "s"    # Ljava/lang/String;

    .line 1246
    const/4 v0, 0x1

    if-nez p0, :cond_4

    return v0

    .line 1247
    :cond_4
    const/4 v1, 0x0

    .local v1, "i":I
    invoke-virtual {p0}, Ljava/lang/String;->length()I

    move-result v2

    .local v2, "len":I
    :goto_9
    if-ge v1, v2, :cond_1a

    .line 1248
    invoke-virtual {p0, v1}, Ljava/lang/String;->charAt(I)C

    move-result v3

    invoke-static {v3}, Ljava/lang/Character;->isWhitespace(C)Z

    move-result v3

    if-nez v3, :cond_17

    .line 1249
    const/4 v0, 0x0

    return v0

    .line 1247
    :cond_17
    add-int/lit8 v1, v1, 0x1

    goto :goto_9

    .line 1252
    .end local v1    # "i":I
    .end local v2    # "len":I
    :cond_1a
    return v0
.end method

.method private static joins([B[B)[B
    .registers 6
    .param p0, "prefix"    # [B
    .param p1, "suffix"    # [B

    .line 1191
    array-length v0, p0

    array-length v1, p1

    add-int/2addr v0, v1

    new-array v0, v0, [B

    .line 1192
    .local v0, "ret":[B
    array-length v1, p0

    const/4 v2, 0x0

    invoke-static {p0, v2, v0, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 1193
    array-length v1, p0

    array-length v3, p1

    invoke-static {p1, v2, v0, v1, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 1194
    return-object v0
.end method

.method public static rc4([B[B)[B
    .registers 13
    .param p0, "data"    # [B
    .param p1, "key"    # [B

    .line 1151
    if-eqz p0, :cond_70

    array-length v0, p0

    if-eqz v0, :cond_70

    if-nez p1, :cond_8

    goto :goto_70

    .line 1152
    :cond_8
    array-length v0, p1

    const/4 v1, 0x1

    if-lt v0, v1, :cond_68

    array-length v0, p1

    const/16 v1, 0x100

    if-gt v0, v1, :cond_68

    .line 1155
    new-array v0, v1, [B

    .line 1156
    .local v0, "iS":[B
    new-array v2, v1, [B

    .line 1157
    .local v2, "iK":[B
    array-length v3, p1

    .line 1158
    .local v3, "keyLen":I
    const/4 v4, 0x0

    .local v4, "i":I
    :goto_17
    if-ge v4, v1, :cond_25

    .line 1159
    int-to-byte v5, v4

    aput-byte v5, v0, v4

    .line 1160
    rem-int v5, v4, v3

    aget-byte v5, p1, v5

    aput-byte v5, v2, v4

    .line 1158
    add-int/lit8 v4, v4, 0x1

    goto :goto_17

    .line 1162
    .end local v4    # "i":I
    :cond_25
    const/4 v4, 0x0

    .line 1164
    .local v4, "j":I
    const/4 v5, 0x0

    .local v5, "i":I
    :goto_27
    if-ge v5, v1, :cond_3c

    .line 1165
    aget-byte v6, v0, v5

    add-int/2addr v6, v4

    aget-byte v7, v2, v5

    add-int/2addr v6, v7

    and-int/lit16 v4, v6, 0xff

    .line 1166
    aget-byte v6, v0, v4

    .line 1167
    .local v6, "tmp":B
    aget-byte v7, v0, v5

    aput-byte v7, v0, v4

    .line 1168
    aput-byte v6, v0, v5

    .line 1164
    add-int/lit8 v5, v5, 0x1

    goto :goto_27

    .line 1171
    .end local v5    # "i":I
    .end local v6    # "tmp":B
    :cond_3c
    array-length v1, p0

    new-array v1, v1, [B

    .line 1172
    .local v1, "ret":[B
    const/4 v5, 0x0

    .line 1173
    .restart local v5    # "i":I
    const/4 v6, 0x0

    .local v6, "counter":I
    :goto_41
    array-length v7, p0

    if-ge v6, v7, :cond_67

    .line 1174
    add-int/lit8 v7, v5, 0x1

    and-int/lit16 v5, v7, 0xff

    .line 1175
    aget-byte v7, v0, v5

    add-int/2addr v7, v4

    and-int/lit16 v4, v7, 0xff

    .line 1176
    aget-byte v7, v0, v4

    .line 1177
    .local v7, "tmp":B
    aget-byte v8, v0, v5

    aput-byte v8, v0, v4

    .line 1178
    aput-byte v7, v0, v5

    .line 1179
    aget-byte v8, v0, v5

    aget-byte v9, v0, v4

    add-int/2addr v8, v9

    and-int/lit16 v8, v8, 0xff

    .line 1180
    .local v8, "t":I
    aget-byte v9, v0, v8

    .line 1181
    .local v9, "k":I
    aget-byte v10, p0, v6

    xor-int/2addr v10, v9

    int-to-byte v10, v10

    aput-byte v10, v1, v6

    .line 1173
    add-int/lit8 v6, v6, 0x1

    goto :goto_41

    .line 1183
    .end local v6    # "counter":I
    .end local v7    # "tmp":B
    .end local v8    # "t":I
    .end local v9    # "k":I
    :cond_67
    return-object v1

    .line 1153
    .end local v0    # "iS":[B
    .end local v1    # "ret":[B
    .end local v2    # "iK":[B
    .end local v3    # "keyLen":I
    .end local v4    # "j":I
    .end local v5    # "i":I
    :cond_68
    new-instance v0, Ljava/lang/IllegalArgumentException;

    const-string v1, "key must be between 1 and 256 bytes"

    invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 1151
    :cond_70
    :goto_70
    const/4 v0, 0x0

    return-object v0
.end method

.method private static rsaTemplate([B[BILjava/lang/String;Z)[B
    .registers 19
    .param p0, "data"    # [B
    .param p1, "key"    # [B
    .param p2, "keySize"    # I
    .param p3, "transformation"    # Ljava/lang/String;
    .param p4, "isEncrypt"    # Z

    .line 1085
    move-object v1, p0

    move-object v2, p1

    const/4 v3, 0x0

    if-eqz v1, :cond_a5

    array-length v0, v1

    if-eqz v0, :cond_a5

    if-eqz v2, :cond_a5

    array-length v0, v2

    if-nez v0, :cond_f

    goto/16 :goto_a5

    .line 1090
    :cond_f
    const-string v0, "RSA"

    if-eqz p4, :cond_21

    .line 1091
    :try_start_13
    new-instance v4, Ljava/security/spec/X509EncodedKeySpec;

    invoke-direct {v4, p1}, Ljava/security/spec/X509EncodedKeySpec;-><init>([B)V

    .line 1092
    .local v4, "keySpec":Ljava/security/spec/X509EncodedKeySpec;
    invoke-static {v0}, Ljava/security/KeyFactory;->getInstance(Ljava/lang/String;)Ljava/security/KeyFactory;

    move-result-object v0

    invoke-virtual {v0, v4}, Ljava/security/KeyFactory;->generatePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;

    move-result-object v0

    .line 1093
    .end local v4    # "keySpec":Ljava/security/spec/X509EncodedKeySpec;
    .local v0, "rsaKey":Ljava/security/Key;
    goto :goto_2e

    .line 1094
    .end local v0    # "rsaKey":Ljava/security/Key;
    :cond_21
    new-instance v4, Ljava/security/spec/PKCS8EncodedKeySpec;

    invoke-direct {v4, p1}, Ljava/security/spec/PKCS8EncodedKeySpec;-><init>([B)V

    .line 1095
    .local v4, "keySpec":Ljava/security/spec/PKCS8EncodedKeySpec;
    invoke-static {v0}, Ljava/security/KeyFactory;->getInstance(Ljava/lang/String;)Ljava/security/KeyFactory;

    move-result-object v0

    invoke-virtual {v0, v4}, Ljava/security/KeyFactory;->generatePrivate(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;

    move-result-object v0

    .line 1097
    .end local v4    # "keySpec":Ljava/security/spec/PKCS8EncodedKeySpec;
    .restart local v0    # "rsaKey":Ljava/security/Key;
    :goto_2e
    if-nez v0, :cond_31

    return-object v3

    .line 1098
    :cond_31
    invoke-static/range {p3 .. p3}, Ljavax/crypto/Cipher;->getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher;

    move-result-object v4

    .line 1099
    .local v4, "cipher":Ljavax/crypto/Cipher;
    if-eqz p4, :cond_39

    const/4 v5, 0x1

    goto :goto_3a

    :cond_39
    const/4 v5, 0x2

    :goto_3a
    invoke-virtual {v4, v5, v0}, Ljavax/crypto/Cipher;->init(ILjava/security/Key;)V

    .line 1100
    array-length v5, v1

    .line 1101
    .local v5, "len":I
    div-int/lit8 v6, p2, 0x8

    .line 1102
    .local v6, "maxLen":I
    if-eqz p4, :cond_50

    .line 1103
    invoke-virtual/range {p3 .. p3}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;

    move-result-object v7

    .line 1104
    .local v7, "lowerTrans":Ljava/lang/String;
    const-string v8, "pkcs1padding"

    invoke-virtual {v7, v8}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z

    move-result v8

    if-eqz v8, :cond_50

    .line 1105
    add-int/lit8 v6, v6, -0xb

    .line 1108
    .end local v7    # "lowerTrans":Ljava/lang/String;
    :cond_50
    div-int v7, v5, v6

    .line 1109
    .local v7, "count":I
    if-lez v7, :cond_81

    .line 1110
    const/4 v8, 0x0

    new-array v9, v8, [B

    .line 1111
    .local v9, "ret":[B
    new-array v10, v6, [B

    .line 1112
    .local v10, "buff":[B
    const/4 v11, 0x0

    .line 1113
    .local v11, "index":I
    const/4 v12, 0x0

    .local v12, "i":I
    :goto_5b
    if-ge v12, v7, :cond_6d

    .line 1114
    invoke-static {p0, v11, v10, v8, v6}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 1115
    invoke-virtual {v4, v10}, Ljavax/crypto/Cipher;->doFinal([B)[B

    move-result-object v13

    invoke-static {v9, v13}, Lcom/blankj/utilcode/util/EncryptUtils;->joins([B[B)[B

    move-result-object v13

    move-object v9, v13

    .line 1116
    add-int/2addr v11, v6

    .line 1113
    add-int/lit8 v12, v12, 0x1

    goto :goto_5b

    .line 1118
    .end local v12    # "i":I
    :cond_6d
    if-eq v11, v5, :cond_80

    .line 1119
    sub-int v12, v5, v11

    .line 1120
    .local v12, "restLen":I
    new-array v13, v12, [B

    move-object v10, v13

    .line 1121
    invoke-static {p0, v11, v10, v8, v12}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 1122
    invoke-virtual {v4, v10}, Ljavax/crypto/Cipher;->doFinal([B)[B

    move-result-object v8

    invoke-static {v9, v8}, Lcom/blankj/utilcode/util/EncryptUtils;->joins([B[B)[B

    move-result-object v3

    move-object v9, v3

    .line 1124
    .end local v12    # "restLen":I
    :cond_80
    return-object v9

    .line 1126
    .end local v9    # "ret":[B
    .end local v10    # "buff":[B
    .end local v11    # "index":I
    :cond_81
    invoke-virtual {v4, p0}, Ljavax/crypto/Cipher;->doFinal([B)[B

    move-result-object v3
    :try_end_85
    .catch Ljava/security/NoSuchAlgorithmException; {:try_start_13 .. :try_end_85} :catch_9f
    .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_13 .. :try_end_85} :catch_9a
    .catch Ljava/security/InvalidKeyException; {:try_start_13 .. :try_end_85} :catch_95
    .catch Ljavax/crypto/BadPaddingException; {:try_start_13 .. :try_end_85} :catch_90
    .catch Ljavax/crypto/IllegalBlockSizeException; {:try_start_13 .. :try_end_85} :catch_8b
    .catch Ljava/security/spec/InvalidKeySpecException; {:try_start_13 .. :try_end_85} :catch_86

    return-object v3

    .line 1138
    .end local v0    # "rsaKey":Ljava/security/Key;
    .end local v4    # "cipher":Ljavax/crypto/Cipher;
    .end local v5    # "len":I
    .end local v6    # "maxLen":I
    .end local v7    # "count":I
    :catch_86
    move-exception v0

    .line 1139
    .local v0, "e":Ljava/security/spec/InvalidKeySpecException;
    invoke-virtual {v0}, Ljava/security/spec/InvalidKeySpecException;->printStackTrace()V

    goto :goto_a4

    .line 1136
    .end local v0    # "e":Ljava/security/spec/InvalidKeySpecException;
    :catch_8b
    move-exception v0

    .line 1137
    .local v0, "e":Ljavax/crypto/IllegalBlockSizeException;
    invoke-virtual {v0}, Ljavax/crypto/IllegalBlockSizeException;->printStackTrace()V

    .end local v0    # "e":Ljavax/crypto/IllegalBlockSizeException;
    goto :goto_a3

    .line 1134
    :catch_90
    move-exception v0

    .line 1135
    .local v0, "e":Ljavax/crypto/BadPaddingException;
    invoke-virtual {v0}, Ljavax/crypto/BadPaddingException;->printStackTrace()V

    .end local v0    # "e":Ljavax/crypto/BadPaddingException;
    goto :goto_a3

    .line 1132
    :catch_95
    move-exception v0

    .line 1133
    .local v0, "e":Ljava/security/InvalidKeyException;
    invoke-virtual {v0}, Ljava/security/InvalidKeyException;->printStackTrace()V

    .end local v0    # "e":Ljava/security/InvalidKeyException;
    goto :goto_a3

    .line 1130
    :catch_9a
    move-exception v0

    .line 1131
    .local v0, "e":Ljavax/crypto/NoSuchPaddingException;
    invoke-virtual {v0}, Ljavax/crypto/NoSuchPaddingException;->printStackTrace()V

    .end local v0    # "e":Ljavax/crypto/NoSuchPaddingException;
    goto :goto_a3

    .line 1128
    :catch_9f
    move-exception v0

    .line 1129
    .local v0, "e":Ljava/security/NoSuchAlgorithmException;
    invoke-virtual {v0}, Ljava/security/NoSuchAlgorithmException;->printStackTrace()V

    .line 1140
    .end local v0    # "e":Ljava/security/NoSuchAlgorithmException;
    :goto_a3
    nop

    .line 1141
    :goto_a4
    return-object v3

    .line 1086
    :cond_a5
    :goto_a5
    return-object v3
.end method

.method private static symmetricTemplate([B[BLjava/lang/String;Ljava/lang/String;[BZ)[B
    .registers 12
    .param p0, "data"    # [B
    .param p1, "key"    # [B
    .param p2, "algorithm"    # Ljava/lang/String;
    .param p3, "transformation"    # Ljava/lang/String;
    .param p4, "iv"    # [B
    .param p5, "isEncrypt"    # Z

    .line 946
    const/4 v0, 0x0

    if-eqz p0, :cond_52

    array-length v1, p0

    if-eqz v1, :cond_52

    if-eqz p1, :cond_52

    array-length v1, p1

    if-nez v1, :cond_c

    goto :goto_52

    .line 949
    :cond_c
    :try_start_c
    const-string v1, "DES"

    invoke-virtual {v1, p2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v1

    if-eqz v1, :cond_23

    .line 950
    new-instance v1, Ljavax/crypto/spec/DESKeySpec;

    invoke-direct {v1, p1}, Ljavax/crypto/spec/DESKeySpec;-><init>([B)V

    .line 951
    .local v1, "desKey":Ljavax/crypto/spec/DESKeySpec;
    invoke-static {p2}, Ljavax/crypto/SecretKeyFactory;->getInstance(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;

    move-result-object v2

    .line 952
    .local v2, "keyFactory":Ljavax/crypto/SecretKeyFactory;
    invoke-virtual {v2, v1}, Ljavax/crypto/SecretKeyFactory;->generateSecret(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;

    move-result-object v3

    move-object v1, v3

    .line 953
    .end local v2    # "keyFactory":Ljavax/crypto/SecretKeyFactory;
    .local v1, "secretKey":Ljavax/crypto/SecretKey;
    goto :goto_28

    .line 954
    .end local v1    # "secretKey":Ljavax/crypto/SecretKey;
    :cond_23
    new-instance v1, Ljavax/crypto/spec/SecretKeySpec;

    invoke-direct {v1, p1, p2}, Ljavax/crypto/spec/SecretKeySpec;-><init>([BLjava/lang/String;)V

    .line 956
    .restart local v1    # "secretKey":Ljavax/crypto/SecretKey;
    :goto_28
    invoke-static {p3}, Ljavax/crypto/Cipher;->getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher;

    move-result-object v2

    .line 957
    .local v2, "cipher":Ljavax/crypto/Cipher;
    const/4 v3, 0x1

    const/4 v4, 0x2

    if-eqz p4, :cond_41

    array-length v5, p4

    if-nez v5, :cond_34

    goto :goto_41

    .line 960
    :cond_34
    new-instance v5, Ljavax/crypto/spec/IvParameterSpec;

    invoke-direct {v5, p4}, Ljavax/crypto/spec/IvParameterSpec;-><init>([B)V

    .line 961
    .local v5, "params":Ljava/security/spec/AlgorithmParameterSpec;
    if-eqz p5, :cond_3c

    goto :goto_3d

    :cond_3c
    const/4 v3, 0x2

    :goto_3d
    invoke-virtual {v2, v3, v1, v5}, Ljavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V

    goto :goto_48

    .line 958
    .end local v5    # "params":Ljava/security/spec/AlgorithmParameterSpec;
    :cond_41
    :goto_41
    if-eqz p5, :cond_44

    goto :goto_45

    :cond_44
    const/4 v3, 0x2

    :goto_45
    invoke-virtual {v2, v3, v1}, Ljavax/crypto/Cipher;->init(ILjava/security/Key;)V

    .line 963
    :goto_48
    invoke-virtual {v2, p0}, Ljavax/crypto/Cipher;->doFinal([B)[B

    move-result-object v0
    :try_end_4c
    .catchall {:try_start_c .. :try_end_4c} :catchall_4d

    return-object v0

    .line 964
    .end local v1    # "secretKey":Ljavax/crypto/SecretKey;
    .end local v2    # "cipher":Ljavax/crypto/Cipher;
    :catchall_4d
    move-exception v1

    .line 965
    .local v1, "e":Ljava/lang/Throwable;
    invoke-virtual {v1}, Ljava/lang/Throwable;->printStackTrace()V

    .line 966
    return-object v0

    .line 946
    .end local v1    # "e":Ljava/lang/Throwable;
    :cond_52
    :goto_52
    return-object v0
.end method