关于base64加密后结果不同的问题
正常情况下我们用base64对“a”加密后结果是YQ==但是我在看一个php代码时,却发现在里面base64.encode('a')得出的结果却是oYY=
通过反向base64.decode('oYY=')得到的结果是a
请教下出现这种情况的原因是什么啊? 本帖最后由 X.I.U 于 2019-10-4 14:05 编辑
china0sen 发表于 2019-10-4 12:46
那就说明他用的不是 Base64 编码 这个编码所有语言通用 更没有自定义一说
Base64 这个编码原理编码格式是固定,但是 PHP 中的内置函数 base64.encode 也是别人根据其编码格式制作的,别人能做出了,为什么自己就不能再其原理编码格式基础上仅限变种?(自己去看 PHP 内置函数 base64.encode 代码)
Base64 只是按照"字典"把一些字符转换成另外一些字符,只需要修改"字典",就是自定义 Base64 编码格式了。 ggtiancai 发表于 2019-10-4 17:41
编码上不论怎么变,位数应该不会变吧?
比如a被加密后是4位。不论怎么调整编码,加密后永远是4位,这样 ...
在base64编码的基础上再编码,关键是再编码!
例如base64编码中有字符串:AAAAAAAAAA...
可以定义某个字符为10(例如是*),则编码为: A*...
其他类推 编码不一样 <?php
echo 'a is encode :',base64_encode('a'),"\n";
echo 'YQ== is decode :',base64_decode('YQ==');
a is encode :YQ==
YQ== is decode :a
看看~~ ixsec 发表于 2019-10-4 12:16
是啊,但是有个网站,登录时用的base64.encode (这里是.不是_)
我输入a,echo显示的结果却是oYY=
谦月 发表于 2019-10-4 12:10
编码不一样
在哪控制,能具体讲讲么 应该是那个PHP中自定义了 Base64 编码格式。
很多项目都这样做,这样只有他们自己能解密,避免其他人解密。 那就说明他用的不是 Base64 编码 这个编码所有语言通用 更没有自定义一说 china0sen 发表于 2019-10-4 12:46
那就说明他用的不是 Base64 编码 这个编码所有语言通用 更没有自定义一说
我也很疑惑,确实是php代码,但是是BASE64.encode() X.I.U 发表于 2019-10-4 12:36
应该是那个PHP中自定义了 Base64 编码格式。
很多项目都这样做,这样只有他们自己能解密,避免其他人解密 ...
YQ==
和oYY=
位数是一致的
你说的这个情况倒是有可能,但是他这样是怎么实现的?定义的地方在哪 X.I.U 发表于 2019-10-4 12:36
应该是那个PHP中自定义了 Base64 编码格式。
很多项目都这样做,这样只有他们自己能解密,避免其他人解密 ...
是不是这样设计 就意味着无法破解了
页:
[1]
2