将字符串中的数据转换为php

时间:2016-05-25 13:02:31

标签: php decode encode string-conversion

我目前正处理数据,我想暂时将其作为加密数据存储在我的数据库中。我并不担心数据库被黑客攻击,我只是想确保输入数据的人不能通过他们自己访问。 (当然还有我)

数据并不是永久存储在数据库中,因为我使用他们的API将其导出到第三方应用程序,但由于它们有速率限制,我需要将数据存储在数据库中,直到限制为止我可以上传它。 (假设出现费率限制)

过程:

我从表单收到的请求是在一个数组中,所以首先我序列化()数组以得到一个长字符串,稍后我会反序列化()。 然后我想使用一种方法,让我将字符串转换为数字,然后再转回而不会丢失信息。

我想将数据转换为数字的原因是因为我使用的HashIds库只编码数字。据我所知,这是一个额外的安全层,我很乐意添加。

在此处阅读有关HashIds的更多信息:http://hashids.org/

我尝试过:

  • 我尝试将字符串转换为十六进制数字,然后将十六进制数字转换为小数。不幸的是,这个数字太大了,我没有运气使用biginteger。

  • base64_encode(),它不会将数据转换为数字,但随后将它们转换为base_convert。但我无法弄清楚php中的基本转换,因为它显然很奇怪。

结论:

如何将我从表单请求接收的数据转换为短编码字符串,可以将其转换回数据而不会有太多麻烦?我还不太清楚PHP提供的所有选项。

更新

为了结束这个线程,我最终使用OpenSSL来加密我的序列化数组。我遇到的唯一问题是,如果请求包含一个文件,我将无法将其序列化并将对象保存到数据库中。我仍然需要解决这个问题,因为第三方应用程序希望该文件是multipart / formdata对象,我不能将文件路径保存到数据库并上传它。但我想我以后必须弄明白。

1 个答案:

答案 0 :(得分:0)

该链接http://hashids.org/提供了一个非常明确的例子。让我们假设你的整数是15

$hashids = new Hashids\Hashids('some random string for a salt. Make sure you use the same salt if you want to be able to decode');

$encoded = $hashids->encode(15);
print_r(['hashedId' => $encoded]);

$decoded = $hashids->decode($hashed);
print_r(['decoded' => $decoded]);

因此$decoded的值应该等于15

<强>更新

抱歉 - 你问题的hashids位告诉我,因此,我误解了你的要求。我会更新我的回答:

您应该使用https://secure.php.net/openssl_encrypthttps://secure.php.net/manual/en/function.openssl-decrypt.php