import
java.util.Base64;
import
java.security.MessageDigest;
import
java.security.NoSuchAlgorithmException;
class
C0838B {
public
static
String encode(String str) {
int
length = str.length();
char
[] cArr =
new
char
[length];
int
i = length -
1
;
while
(i >=
0
) {
int
i2 = i -
1
;
cArr[i] = (
char
) (str.charAt(i) ^
'5'
);
if
(i2 <
0
) {
break
;
}
i = i2 -
1
;
cArr[i2] = (
char
) (str.charAt(i2) ^
'2'
);
}
return
new
String(cArr);
}
}
final
class
C0839C {
public
static
final
C0839C INSTANCE =
new
C0839C();
private
C0839C() {
}
private
final
char
cipher(
char
c,
int
i) {
char
c2 = Character.isUpperCase(c) ?
'A'
:
'a'
;
return
(
char
) (((
char
) (((((
char
) (c - c2)) + (i %
26
)) +
26
) %
26
)) + c2);
}
public
final
String cipher(String str,
int
i) {
StringBuilder sb =
new
StringBuilder();
int
length = str.length();
for
(
int
i2 =
0
; i2 < length; i2++) {
if
( ((
int
) str.charAt(i2) >=
65
) && ( (
int
)str.charAt(i2)<=
90
)) {
sb.append(cipher(str.charAt(i2), i));
}
else
if
( ((
int
)str.charAt(i2) <
97
) || ((
int
)str.charAt(i2) >
122
) ) {
sb.append(str.charAt(i2));
}
else
{
sb.append(cipher(str.charAt(i2), i));
}
}
String sb2 = sb.toString();
return
sb2;
}
}
final
class
Base64Utils {
public
static
final
Base64Utils INSTANCE =
new
Base64Utils();
final
Base64.Decoder decoder = Base64.getDecoder();
final
Base64.Encoder encoder = Base64.getEncoder();
private
Base64Utils() {
}
public
final
byte
[] encodeToBytes(
byte
[] bArr) {
byte
[] encode = encoder.encode(bArr);
return
encode;
}
public
final
String encodeToString(
byte
[] bArr) {
String encodeToString = encoder.encodeToString(bArr);
return
encodeToString;
}
public
final
byte
[] decode(
byte
[] bArr) {
byte
[] decode = decoder.decode(bArr);
return
decode;
}
public
final
byte
[] decode(String str) {
byte
[] decode = decoder.decode(str);
return
decode;
}
}
final
class
MD5Utils {
public
static
final
MD5Utils INSTANCE =
new
MD5Utils();
private
MD5Utils() {
}
public
final
String MD5(String sourceStr) {
try
{
MessageDigest messageDigest = MessageDigest.getInstance(
"MD5"
);
byte
[] bytes = sourceStr.getBytes();
messageDigest.update(bytes);
byte
[] digest = messageDigest.digest();
StringBuffer stringBuffer =
new
StringBuffer(
""
);
int
length = digest.length;
for
(
int
i =
0
; i < length; i++) {
int
i2 = digest[i];
if
(i2 <
0
) {
i2 +=
256
;
}
if
(i2 <
16
) {
stringBuffer.append(
"0"
);
}
stringBuffer.append(Integer.toHexString(i2));
}
String stringBuffer2 = stringBuffer.toString();
return
stringBuffer2;
}
catch
(Exception e) {
System.out.println(e);
return
""
;
}
}
}
public
class
Test
{
public
static
void
main(String[] args)
{
String str =
"11111"
;
String str1;
String str2 =
"flag{123}"
;
String str3;
if
(
1
==
1
){
C0839C c0839c = C0839C.INSTANCE;
MD5Utils mD5Utils = MD5Utils.INSTANCE;
Base64Utils base64Utils = Base64Utils.INSTANCE;
String encode = C0838B.encode(str +
"Wuaipojie2023"
);
System.out.println(
"encode:"
+encode);
byte
[] bytes = encode.getBytes();
str1 = base64Utils.encodeToString(bytes);
System.out.println(
"B64:"
+str1);
str3 = c0839c.cipher(mD5Utils.MD5(str1),
5
);
System.out.println(
"final:"
+str3);
}
}
}