Base64怎么没有+号,有+有/还有=,你就给出一串密文,我帮你猜你还jue人。再说加密不作混淆你加密干嘛你直接非对称就完了呗。
[roothome.php?mod=space&uid=2291276 decode]# python3 encrypt.py "flag{This_is_a_sample_flag_by_ukelili}"
Encrypted flag: Zmx-hZ3-tU+-Glz-X2l-zX2-Ffc-2Ft-cGx-lX2-ZsY-Wdf-Ynl-fdW-tlb-Gls-+X0-=
[root@ukelili decode]# python3 decrypt.py "Zmx-hZ3-tU+-Glz-X2l-zX2-Ffc-2Ft-cGx-lX2-ZsY-Wdf-Ynl-fdW-tlb-Gls-+X0-="
Decrypted flag: flag{This_is_a_sample_flag_by_ukelili}
[root@ukelili decode]#
# encrypt.py
import base64
import random
import sys
def encrypt_flag(flag):
# 对明文进行 Base64 编码
encoded_bytes = base64.b64encode(flag.encode('utf-8'))
encoded_str = encoded_bytes.decode('utf-8')
# 手动替换特定字符为 '+'
encoded_str = encoded_str.replace('a', '+')
# 添加分隔符,每 3 个字符用 '-' 分隔
encoded_parts = [encoded_str[i:i+3] for i in range(0, len(encoded_str), 3)]
encrypted_flag = '-'.join(encoded_parts)
return encrypted_flag
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python3 encrypt.py <plaintext>")
sys.exit(1)
# 从命令行获取明文输入
flag = sys.argv[1]
encrypted_flag = encrypt_flag(flag)
print("Encrypted flag:", encrypted_flag)
# decrypt.py
import base64
import sys
def decrypt_flag(encrypted_flag):
# 去除分隔符并重组字符串
encoded_str = ''.join(encrypted_flag.split('-'))
# 恢复特定字符 '+' 为 'a'
encoded_str = encoded_str.replace('+', 'a')
# 对编码后的字符串进行 Base64 解码
decoded_bytes = base64.b64decode(encoded_str)
decoded_str = decoded_bytes.decode('utf-8')
return decoded_str
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python3 decrypt.py <encrypted_flag>")
sys.exit(1)
# 从命令行获取密文输入
encrypted_flag = sys.argv[1]
decrypted_flag = decrypt_flag(encrypted_flag)
print("Decrypted flag:", decrypted_flag)
|