public class org.postgresql.util.MD5Digest
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.postgresql.util.MD5Digest
super_class: java.lang.Object
{
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 // org.postgresql.util.MD5Digest this
0: .line 17
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 18
return
end local 0 // org.postgresql.util.MD5Digest this
LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/postgresql/util/MD5Digest;
public static byte[] encode(byte[], byte[], byte[]);
descriptor: ([B[B[B)[B
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=8, args_size=3
start local 0 // byte[] user
start local 1 // byte[] password
start local 2 // byte[] salt
0: .line 32
bipush 35
newarray 8
astore 6 /* hexDigest */
start local 6 // byte[] hexDigest
1: .line 35
ldc "MD5"
invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
astore 3 /* md */
start local 3 // java.security.MessageDigest md
2: .line 37
aload 3 /* md */
aload 1 /* password */
invokevirtual java.security.MessageDigest.update:([B)V
3: .line 38
aload 3 /* md */
aload 0 /* user */
invokevirtual java.security.MessageDigest.update:([B)V
4: .line 39
aload 3 /* md */
invokevirtual java.security.MessageDigest.digest:()[B
astore 4 /* tempDigest */
start local 4 // byte[] tempDigest
5: .line 41
aload 4 /* tempDigest */
aload 6 /* hexDigest */
iconst_0
invokestatic org.postgresql.util.MD5Digest.bytesToHex:([B[BI)V
6: .line 42
aload 3 /* md */
aload 6 /* hexDigest */
iconst_0
bipush 32
invokevirtual java.security.MessageDigest.update:([BII)V
7: .line 43
aload 3 /* md */
aload 2 /* salt */
invokevirtual java.security.MessageDigest.update:([B)V
8: .line 44
aload 3 /* md */
invokevirtual java.security.MessageDigest.digest:()[B
astore 5 /* passDigest */
start local 5 // byte[] passDigest
9: .line 46
aload 5 /* passDigest */
aload 6 /* hexDigest */
iconst_3
invokestatic org.postgresql.util.MD5Digest.bytesToHex:([B[BI)V
10: .line 47
aload 6 /* hexDigest */
iconst_0
bipush 109
bastore
11: .line 48
aload 6 /* hexDigest */
iconst_1
bipush 100
bastore
12: .line 49
aload 6 /* hexDigest */
iconst_2
bipush 53
bastore
13: .line 50
goto 16
end local 5 // byte[] passDigest
end local 4 // byte[] tempDigest
end local 3 // java.security.MessageDigest md
StackMap locals: byte[] byte[] byte[] top top top byte[]
StackMap stack: java.security.NoSuchAlgorithmException
14: astore 7 /* e */
start local 7 // java.security.NoSuchAlgorithmException e
15: .line 51
new java.lang.IllegalStateException
dup
ldc "Unable to encode password with MD5"
aload 7 /* e */
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 7 // java.security.NoSuchAlgorithmException e
start local 3 // java.security.MessageDigest md
start local 4 // byte[] tempDigest
start local 5 // byte[] passDigest
16: .line 54
StackMap locals: byte[] byte[] byte[] java.security.MessageDigest byte[] byte[] byte[]
StackMap stack:
aload 6 /* hexDigest */
areturn
end local 6 // byte[] hexDigest
end local 5 // byte[] passDigest
end local 4 // byte[] tempDigest
end local 3 // java.security.MessageDigest md
end local 2 // byte[] salt
end local 1 // byte[] password
end local 0 // byte[] user
LocalVariableTable:
Start End Slot Name Signature
0 17 0 user [B
0 17 1 password [B
0 17 2 salt [B
2 14 3 md Ljava/security/MessageDigest;
16 17 3 md Ljava/security/MessageDigest;
5 14 4 tempDigest [B
16 17 4 tempDigest [B
9 14 5 passDigest [B
16 17 5 passDigest [B
1 17 6 hexDigest [B
15 16 7 e Ljava/security/NoSuchAlgorithmException;
Exception table:
from to target type
1 13 14 Class java.security.NoSuchAlgorithmException
MethodParameters:
Name Flags
user
password
salt
private static void bytesToHex(byte[], byte[], int);
descriptor: ([B[BI)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=8, args_size=3
start local 0 // byte[] bytes
start local 1 // byte[] hex
start local 2 // int offset
0: .line 62
bipush 16
newarray 5
dup
iconst_0
bipush 48
castore
dup
iconst_1
bipush 49
castore
dup
iconst_2
bipush 50
castore
dup
iconst_3
bipush 51
castore
dup
iconst_4
bipush 52
castore
dup
iconst_5
bipush 53
castore
dup
bipush 6
bipush 54
castore
dup
bipush 7
bipush 55
castore
dup
bipush 8
bipush 56
castore
dup
bipush 9
bipush 57
castore
dup
bipush 10
bipush 97
castore
dup
bipush 11
bipush 98
castore
dup
bipush 12
bipush 99
castore
dup
bipush 13
bipush 100
castore
dup
bipush 14
bipush 101
castore
dup
bipush 15
bipush 102
castore
1: .line 61
astore 3 /* lookup */
start local 3 // char[] lookup
2: .line 67
iload 2 /* offset */
istore 7 /* pos */
start local 7 // int pos
3: .line 69
iconst_0
istore 4 /* i */
start local 4 // int i
4: goto 11
5: .line 70
StackMap locals: byte[] byte[] int char[] int top top int
StackMap stack:
aload 0 /* bytes */
iload 4 /* i */
baload
sipush 255
iand
istore 5 /* c */
start local 5 // int c
6: .line 71
iload 5 /* c */
iconst_4
ishr
istore 6 /* j */
start local 6 // int j
7: .line 72
aload 1 /* hex */
iload 7 /* pos */
iinc 7 /* pos */ 1
aload 3 /* lookup */
iload 6 /* j */
caload
i2b
bastore
8: .line 73
iload 5 /* c */
bipush 15
iand
istore 6 /* j */
9: .line 74
aload 1 /* hex */
iload 7 /* pos */
iinc 7 /* pos */ 1
aload 3 /* lookup */
iload 6 /* j */
caload
i2b
bastore
10: .line 69
iinc 4 /* i */ 1
end local 6 // int j
end local 5 // int c
StackMap locals:
StackMap stack:
11: iload 4 /* i */
bipush 16
if_icmplt 5
12: .line 76
return
end local 7 // int pos
end local 4 // int i
end local 3 // char[] lookup
end local 2 // int offset
end local 1 // byte[] hex
end local 0 // byte[] bytes
LocalVariableTable:
Start End Slot Name Signature
0 13 0 bytes [B
0 13 1 hex [B
0 13 2 offset I
2 13 3 lookup [C
4 13 4 i I
6 11 5 c I
7 11 6 j I
3 13 7 pos I
MethodParameters:
Name Flags
bytes
hex
offset
}
SourceFile: "MD5Digest.java"