关于php:base64_encode是否提供唯一的数据?


Does base64_encode gives unique data?

本问题已经有最佳答案,请猛点这里访问。

嗨,我的问题是,每次运行脚本时base64_编码是否会对唯一数据进行编码?

下面是代码。

1
2
3
4
    <?php
    $id = 1;
    echo base64_encode($id);
    ?>

如果每次都不提供唯一的数据,那么对字符串进行编码并传入URL的关键是什么。这会使URL安全吗??


base64编码不提供唯一数据。它的目的是以字符串形式提供二进制数据的紧凑表示。在您的示例中,您正在对非二进制数据进行编码,因此它不是很实用。但是,如果要对包含换行符和标点符号的字符串进行编码并通过URL传递,则不能直接发送二进制数据。

例如,如果您有字符串Hello, World!!
,那么将有三个标点符号、一个空格和一个换行符,所有这些都需要进行URL编码。这样做的结果是:

1
Hello%2C+World%21%21%0A

它有23个字节长。

另一方面,如果要对相同的字符串进行base64编码,结果将是:

1
SGVsbG8sIFdvcmxkISEK

这是20个字符,或者短13%。如果您有大量非字母数字字符或大量数据,这很快就会累积起来。

因此,base64编码的主要优点是它对某些数据的表示稍微紧凑一些。


base64编码不是一种加密方法。它用于将二进制数据编码成文本,这使得通过Internet传输更安全。

如果传输位,某些协议可能会对其进行不同的解释。流文本更可靠。

base64编码用于什么?

如果您需要真正的加密,您需要使用一些基于您可以对其他用户隐藏的salt进行散列的东西,例如mcrypt库。

http://php.net/manual/en/book.mcrypt.php


base64编码是一种仅使用有限字符集表示数据的方法。当您需要将数据存储在某些东西(如无法以原始格式处理数据的cookie)中时,可以使用它。