ggtiancai 发表于 2019-10-4 11:11

关于base64加密后结果不同的问题

正常情况下我们用base64对“a”加密后结果是YQ==
但是我在看一个php代码时,却发现在里面base64.encode('a')得出的结果却是oYY=
通过反向base64.decode('oYY=')得到的结果是a
请教下出现这种情况的原因是什么啊?

X.I.U 发表于 2019-10-4 14:04

本帖最后由 X.I.U 于 2019-10-4 14:05 编辑

china0sen 发表于 2019-10-4 12:46
那就说明他用的不是 Base64 编码 这个编码所有语言通用 更没有自定义一说
Base64 这个编码原理编码格式是固定,但是 PHP 中的内置函数 base64.encode 也是别人根据其编码格式制作的,别人能做出了,为什么自己就不能再其原理编码格式基础上仅限变种?(自己去看 PHP 内置函数 base64.encode 代码)
Base64 只是按照"字典"把一些字符转换成另外一些字符,只需要修改"字典",就是自定义 Base64 编码格式了。

chishingchan 发表于 2019-10-5 12:59

ggtiancai 发表于 2019-10-4 17:41
编码上不论怎么变,位数应该不会变吧?
比如a被加密后是4位。不论怎么调整编码,加密后永远是4位,这样 ...

在base64编码的基础上再编码,关键是再编码!
例如base64编码中有字符串:AAAAAAAAAA...
可以定义某个字符为10(例如是*),则编码为: A*...
其他类推

谦月 发表于 2019-10-4 12:10

编码不一样

ixsec 发表于 2019-10-4 12:16

<?php

echo 'a is encode :',base64_encode('a'),"\n";

echo 'YQ== is decode :',base64_decode('YQ==');

a is encode :YQ==
YQ== is decode :a

看看~~

ggtiancai 发表于 2019-10-4 12:25

ixsec 发表于 2019-10-4 12:16


是啊,但是有个网站,登录时用的base64.encode (这里是.不是_)
我输入a,echo显示的结果却是oYY=

ggtiancai 发表于 2019-10-4 12:29

谦月 发表于 2019-10-4 12:10
编码不一样

在哪控制,能具体讲讲么

X.I.U 发表于 2019-10-4 12:36

应该是那个PHP中自定义了 Base64 编码格式。
很多项目都这样做,这样只有他们自己能解密,避免其他人解密。

十三月的风 发表于 2019-10-4 12:46

那就说明他用的不是 Base64 编码 这个编码所有语言通用 更没有自定义一说

ggtiancai 发表于 2019-10-4 13:15

china0sen 发表于 2019-10-4 12:46
那就说明他用的不是 Base64 编码 这个编码所有语言通用 更没有自定义一说

我也很疑惑,确实是php代码,但是是BASE64.encode()

ggtiancai 发表于 2019-10-4 13:46

X.I.U 发表于 2019-10-4 12:36
应该是那个PHP中自定义了 Base64 编码格式。
很多项目都这样做,这样只有他们自己能解密,避免其他人解密 ...

YQ==
和oYY=
位数是一致的
你说的这个情况倒是有可能,但是他这样是怎么实现的?定义的地方在哪

ggtiancai 发表于 2019-10-4 13:46

X.I.U 发表于 2019-10-4 12:36
应该是那个PHP中自定义了 Base64 编码格式。
很多项目都这样做,这样只有他们自己能解密,避免其他人解密 ...

是不是这样设计 就意味着无法破解了
页: [1] 2
查看完整版本: 关于base64加密后结果不同的问题