base64 两次反转加密后, 逆向解码不一致
直接贴测试代码
import base64 p = b'123456' print('password: %s' % p) salt = b'84' print('salt: %s' % salt) print('reverser:') p = p[::-1] print(p) print('encode:') p = base64.b64encode(p, salt) print(p) print('reverser:') p = p.strip(b'=')[::-1] print(p) print('encode:') p = base64.b64encode(p, salt) print(p) print('reverser:') p = p.strip(b'=')[::-1] print(p) print('ndecode password') print('reverser:') rp = p[::-1] + b'==' print(rp) print('decode:') rp = base64.b64decode(rp, salt) print(rp) print('reverser:') rp = rp[::-1] + b'==' print(rp) print('decode:') rp = base64.b64decode(rp, salt) print(rp) print('reverser:') rp = rp[::-1] print(rp)
输出结果:
encode: NjU0MzIx reverser: xIzM0UjN encode: eEl6TTBVak4= reverser: 4kaVBTT6lEe decode password reverser: eEl6TTBVak4== decode: xIzM0UjO reverser: OjU0MzIx== decode: :54321 reverser: 12345:
在第一次反转解码的时候就出错了, 本来是想在 sqlite 里保存一些可逆的加密字符
想着两次 b64 反转加密应该不容易猜, 结果这个 salt 就出了问题
不指定 salt, 就不会出先这种问题
现在想问一下, 有哪些好用的可逆的加密库, 最好是标准库