public class oadd.org.apache.commons.codec.digest.Md5Crypt extends java.lang.Object
{
static final java.lang.String APR1_PREFIX;
private static final int BLOCKSIZE;
static final java.lang.String MD5_PREFIX;
private static final int ROUNDS;
public void <init>()
{
oadd.org.apache.commons.codec.digest.Md5Crypt v;
v := @this: oadd.org.apache.commons.codec.digest.Md5Crypt;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public static java.lang.String apr1Crypt(byte[])
{
byte[] v;
java.lang.String v, v, v;
v := @parameter: byte[];
v = staticinvoke <oadd.org.apache.commons.codec.digest.B64: java.lang.String getRandomSalt(int)>(8);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("$apr1$\u0001");
v = staticinvoke <oadd.org.apache.commons.codec.digest.Md5Crypt: java.lang.String apr1Crypt(byte[],java.lang.String)>(v, v);
return v;
}
public static java.lang.String apr1Crypt(byte[], java.util.Random)
{
byte[] v;
java.util.Random v;
java.lang.String v, v, v;
v := @parameter: byte[];
v := @parameter: java.util.Random;
v = staticinvoke <oadd.org.apache.commons.codec.digest.B64: java.lang.String getRandomSalt(int,java.util.Random)>(8, v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("$apr1$\u0001");
v = staticinvoke <oadd.org.apache.commons.codec.digest.Md5Crypt: java.lang.String apr1Crypt(byte[],java.lang.String)>(v, v);
return v;
}
public static java.lang.String apr1Crypt(byte[], java.lang.String)
{
byte[] v;
java.lang.String v, v;
boolean v;
v := @parameter: byte[];
v := @parameter: java.lang.String;
if v == null goto label;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("$apr1$");
if v != 0 goto label;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("$apr1$\u0001");
label:
v = staticinvoke <oadd.org.apache.commons.codec.digest.Md5Crypt: java.lang.String md5Crypt(byte[],java.lang.String,java.lang.String)>(v, v, "$apr1$");
return v;
}
public static java.lang.String apr1Crypt(java.lang.String)
{
byte[] v;
java.nio.charset.Charset v;
java.lang.String v, v;
v := @parameter: java.lang.String;
v = <java.nio.charset.StandardCharsets: java.nio.charset.Charset UTF_8>;
v = virtualinvoke v.<java.lang.String: byte[] getBytes(java.nio.charset.Charset)>(v);
v = staticinvoke <oadd.org.apache.commons.codec.digest.Md5Crypt: java.lang.String apr1Crypt(byte[])>(v);
return v;
}
public static java.lang.String apr1Crypt(java.lang.String, java.lang.String)
{
byte[] v;
java.nio.charset.Charset v;
java.lang.String v, v, v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = <java.nio.charset.StandardCharsets: java.nio.charset.Charset UTF_8>;
v = virtualinvoke v.<java.lang.String: byte[] getBytes(java.nio.charset.Charset)>(v);
v = staticinvoke <oadd.org.apache.commons.codec.digest.Md5Crypt: java.lang.String apr1Crypt(byte[],java.lang.String)>(v, v);
return v;
}
public static java.lang.String md5Crypt(byte[])
{
byte[] v;
java.lang.String v, v, v;
v := @parameter: byte[];
v = staticinvoke <oadd.org.apache.commons.codec.digest.B64: java.lang.String getRandomSalt(int)>(8);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("$1$\u0001");
v = staticinvoke <oadd.org.apache.commons.codec.digest.Md5Crypt: java.lang.String md5Crypt(byte[],java.lang.String)>(v, v);
return v;
}
public static java.lang.String md5Crypt(byte[], java.util.Random)
{
byte[] v;
java.util.Random v;
java.lang.String v, v, v;
v := @parameter: byte[];
v := @parameter: java.util.Random;
v = staticinvoke <oadd.org.apache.commons.codec.digest.B64: java.lang.String getRandomSalt(int,java.util.Random)>(8, v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("$1$\u0001");
v = staticinvoke <oadd.org.apache.commons.codec.digest.Md5Crypt: java.lang.String md5Crypt(byte[],java.lang.String)>(v, v);
return v;
}
public static java.lang.String md5Crypt(byte[], java.lang.String)
{
byte[] v;
java.lang.String v, v;
v := @parameter: byte[];
v := @parameter: java.lang.String;
v = staticinvoke <oadd.org.apache.commons.codec.digest.Md5Crypt: java.lang.String md5Crypt(byte[],java.lang.String,java.lang.String)>(v, v, "$1$");
return v;
}
public static java.lang.String md5Crypt(byte[], java.lang.String, java.lang.String)
{
java.security.SecureRandom v;
byte[] v;
java.lang.String v, v, v;
v := @parameter: byte[];
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = new java.security.SecureRandom;
specialinvoke v.<java.security.SecureRandom: void <init>()>();
v = staticinvoke <oadd.org.apache.commons.codec.digest.Md5Crypt: java.lang.String md5Crypt(byte[],java.lang.String,java.lang.String,java.util.Random)>(v, v, v, v);
return v;
}
public static java.lang.String md5Crypt(byte[], java.lang.String, java.lang.String, java.util.Random)
{
byte[] v, v, v, v, v;
java.util.Random v;
java.util.regex.Matcher v;
byte v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
boolean v;
java.lang.StringBuilder v;
java.util.regex.Pattern v;
java.security.MessageDigest v, v;
java.nio.charset.Charset v, v;
int v, v, v, v, v, v, v, v, v, v;
java.lang.String v, v, v, v, v, v, v, v;
java.lang.IllegalArgumentException v;
v := @parameter: byte[];
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.util.Random;
v = lengthof v;
if v != null goto label;
v = staticinvoke <oadd.org.apache.commons.codec.digest.B64: java.lang.String getRandomSalt(int,java.util.Random)>(8, v);
goto label;
label:
v = virtualinvoke v.<java.lang.String: java.lang.String replace(java.lang.CharSequence,java.lang.CharSequence)>("$", "\\$");
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("^\u0001([\\.\\/a-zA-Z0-9]{1,8}).*");
v = staticinvoke <java.util.regex.Pattern: java.util.regex.Pattern compile(java.lang.String)>(v);
v = virtualinvoke v.<java.util.regex.Pattern: java.util.regex.Matcher matcher(java.lang.CharSequence)>(v);
v = virtualinvoke v.<java.util.regex.Matcher: boolean find()>();
if v != 0 goto label;
v = new java.lang.IllegalArgumentException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Invalid salt value: \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = virtualinvoke v.<java.util.regex.Matcher: java.lang.String group(int)>(1);
label:
v = <java.nio.charset.StandardCharsets: java.nio.charset.Charset UTF_8>;
v = virtualinvoke v.<java.lang.String: byte[] getBytes(java.nio.charset.Charset)>(v);
v = staticinvoke <oadd.org.apache.commons.codec.digest.DigestUtils: java.security.MessageDigest getMd5Digest()>();
virtualinvoke v.<java.security.MessageDigest: void update(byte[])>(v);
v = <java.nio.charset.StandardCharsets: java.nio.charset.Charset UTF_8>;
v = virtualinvoke v.<java.lang.String: byte[] getBytes(java.nio.charset.Charset)>(v);
virtualinvoke v.<java.security.MessageDigest: void update(byte[])>(v);
virtualinvoke v.<java.security.MessageDigest: void update(byte[])>(v);
v = staticinvoke <oadd.org.apache.commons.codec.digest.DigestUtils: java.security.MessageDigest getMd5Digest()>();
virtualinvoke v.<java.security.MessageDigest: void update(byte[])>(v);
virtualinvoke v.<java.security.MessageDigest: void update(byte[])>(v);
virtualinvoke v.<java.security.MessageDigest: void update(byte[])>(v);
v = virtualinvoke v.<java.security.MessageDigest: byte[] digest()>();
v = v;
label:
if v <= 0 goto label;
if v <= 16 goto label;
v = 16;
goto label;
label:
v = v;
label:
virtualinvoke v.<java.security.MessageDigest: void update(byte[],int,int)>(v, 0, v);
v = v - 16;
goto label;
label:
staticinvoke <java.util.Arrays: void fill(byte[],byte)>(v, 0);
v = v;
label:
if v <= 0 goto label;
v = v & 1;
if v != 1 goto label;
v = v[0];
virtualinvoke v.<java.security.MessageDigest: void update(byte)>(v);
goto label;
label:
v = v[0];
virtualinvoke v.<java.security.MessageDigest: void update(byte)>(v);
label:
v = v >> 1;
goto label;
label:
v = new java.lang.StringBuilder;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001\u0001$");
specialinvoke v.<java.lang.StringBuilder: void <init>(java.lang.String)>(v);
v = virtualinvoke v.<java.security.MessageDigest: byte[] digest()>();
v = 0;
label:
if v >= 1000 goto label;
v = staticinvoke <oadd.org.apache.commons.codec.digest.DigestUtils: java.security.MessageDigest getMd5Digest()>();
v = v & 1;
if v == 0 goto label;
virtualinvoke v.<java.security.MessageDigest: void update(byte[])>(v);
goto label;
label:
virtualinvoke v.<java.security.MessageDigest: void update(byte[],int,int)>(v, 0, 16);
label:
v = v % 3;
if v == 0 goto label;
virtualinvoke v.<java.security.MessageDigest: void update(byte[])>(v);
label:
v = v % 7;
if v == 0 goto label;
virtualinvoke v.<java.security.MessageDigest: void update(byte[])>(v);
label:
v = v & 1;
if v == 0 goto label;
virtualinvoke v.<java.security.MessageDigest: void update(byte[],int,int)>(v, 0, 16);
goto label;
label:
virtualinvoke v.<java.security.MessageDigest: void update(byte[])>(v);
label:
v = virtualinvoke v.<java.security.MessageDigest: byte[] digest()>();
v = v + 1;
goto label;
label:
v = v[0];
v = v[6];
v = v[12];
staticinvoke <oadd.org.apache.commons.codec.digest.B64: void b64from24bit(byte,byte,byte,int,java.lang.StringBuilder)>(v, v, v, 4, v);
v = v[1];
v = v[7];
v = v[13];
staticinvoke <oadd.org.apache.commons.codec.digest.B64: void b64from24bit(byte,byte,byte,int,java.lang.StringBuilder)>(v, v, v, 4, v);
v = v[2];
v = v[8];
v = v[14];
staticinvoke <oadd.org.apache.commons.codec.digest.B64: void b64from24bit(byte,byte,byte,int,java.lang.StringBuilder)>(v, v, v, 4, v);
v = v[3];
v = v[9];
v = v[15];
staticinvoke <oadd.org.apache.commons.codec.digest.B64: void b64from24bit(byte,byte,byte,int,java.lang.StringBuilder)>(v, v, v, 4, v);
v = v[4];
v = v[10];
v = v[5];
staticinvoke <oadd.org.apache.commons.codec.digest.B64: void b64from24bit(byte,byte,byte,int,java.lang.StringBuilder)>(v, v, v, 4, v);
v = v[11];
staticinvoke <oadd.org.apache.commons.codec.digest.B64: void b64from24bit(byte,byte,byte,int,java.lang.StringBuilder)>(0, 0, v, 2, v);
virtualinvoke v.<java.security.MessageDigest: void reset()>();
virtualinvoke v.<java.security.MessageDigest: void reset()>();
staticinvoke <java.util.Arrays: void fill(byte[],byte)>(v, 0);
staticinvoke <java.util.Arrays: void fill(byte[],byte)>(v, 0);
staticinvoke <java.util.Arrays: void fill(byte[],byte)>(v, 0);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
}
}