base64_encode是否提供唯一数据?

时间:2014-03-29 05:58:36

标签: php

我的问题是,每次运行脚本时base64_encode都会执行唯一数据吗?

以下是代码。

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

如果它不是每次都提供唯一数据那么编码字符串和传入url的重点是什么。这会使网址安全吗?

3 个答案:

答案 0 :(得分:2)

Base64编码不是加密方法。它用于将二进制数据编码为文本,这使得通过互联网传输更安全。

如果流比特,某些协议可能会以不同方式解释它。流式文本更可靠。

What is base 64 encoding used for?

如果您需要真正的加密,则需要使用基于您可以向其他用户隐藏的盐的哈希值,例如mcrypt库。

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

答案 1 :(得分:2)

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

例如,如果您有字符串Hello, World!!\n,则会有三个标点符号,一个空格和一个换行符,所有这些都需要进行URL编码。这样做会得到结果:

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

长度为23个字节。

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

SGVsbG8sIFdvcmxkISEK

这是20个字符,或者缩短约13%。如果你有很多非字母数字字符或大量数据,这会很快加起来。

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

答案 2 :(得分:1)

Base64 encoding是一种仅使用一组有限字符表示数据的方法。当您需要将数据存储在无法以原始格式处理数据的cookie中时,可以使用它。