OPENSSL_RAW_DATA是什么意思?

13

我对PHP加密(和加密技术一般)还比较陌生,最近在了解如何使用PHP的openssl_encrypt()函数。

有一个选项可以添加名为OPENSSL_RAW_DATA的标志。这实际上是什么,我在哪里可以看到PHP在PHP源代码中如何使用它?


原始数据是二进制数据。这意味着您无法阅读它,因为与该数据相关联的编码表使其对人类可理解。它只是数字,用二进制表示,因此通常在回显/显示时看起来像乱码。为了安全地通过HTTP传输此类数据,我们通常使用base64进行编码。 - Mjh
1个回答

19

OPENSSL_RAW_DATA只是告诉openssl_encrypt()返回原始数据的密文,而不是默认的Base64编码。源代码容易找到,但并不实用,因为该标志没有额外的特殊功能...相反,它告诉PHP不要执行额外的Base64编码步骤。


所以如果我有:base64_encode(openssl_encrypt($data, "aes-256-cbc", $key, OPENSSL_RAW_DATA)); 这只是确保数据以base64编码,因为openssl_encrypt可能使用了不同于默认值的编码,对吗? - Artvader
1
不编码数据,确保数据完全未编码。您将获得原始的二进制表示。 - Narf
1
我有点难过终于读到这个——我正在传递OPENSSL_RAW_DATA以获取原始数据,然后将原始数据传递到base64_encode中。如果我没有传递常量,我可以跳过一步。好吧,代码正在工作,我不会“修复”它! - UncaAlby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接