base64 只是编码方案,不属于加密。通常是根据输入的“字节信息”进行加密,加密完后有编码到合法 ASCII 字节集字符的时候才会使用 base64 等编码方案对加密后的内容处理一下。
其实可以用 str.translate 替代偏移量:
b64_table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
b64_table_encode = 'BCDEFGHIJKLMNOPQRSTUVWXYZAbcdefghijklmnopqrstuvwxyza0123456789+/'
# 换一个密钥?
# b64_table_encode = '6zVaRM7KQOeCHSw2Bgb+qodWFLpUnNAJ391kvuZtDc04mPs8ETrGXlijyfhYIx5/'
b64_table_encoder = str.maketrans(b64_table, b64_table_encode)
b64_table_decoder = str.maketrans(b64_table_encode, b64_table)
def encrypt(input_text):
return base64.b64encode(input_text.encode()).decode().translate(b64_table_encoder)
def decrypt(encrypted_text):
return base64.b64decode(encrypted_text.translate(b64_table_decoder)).decode()
这个方案也可以随机生成一个密钥,强度比字母后移 x 位要稍微强一点。
|