我的问题是,每次运行脚本时base64_encode都会执行唯一数据吗?
以下是代码。
<?php
$id = 1;
echo base64_encode($id);
?>
如果它不是每次都提供唯一数据那么编码字符串和传入url的重点是什么。这会使网址安全吗?
答案 0 :(得分:2)
Base64编码不是加密方法。它用于将二进制数据编码为文本,这使得通过互联网传输更安全。
如果流比特,某些协议可能会以不同方式解释它。流式文本更可靠。
What is base 64 encoding used for?
如果您需要真正的加密,则需要使用基于您可以向其他用户隐藏的盐的哈希值,例如mcrypt库。
答案 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中时,可以使用它。