首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加密数组为字符串

加密数组为字符串
EN

Stack Overflow用户
提问于 2009-05-07 22:36:24
回答 7查看 19.7K关注 0票数 0

我正在寻找一种双向加密算法来将数组编码为字符串,这样我就可以安全地将一些数据存储在cookie中。算法不应该只是将数组内爆,我也希望它被混淆。我的数据包含所有可打印的字符。

链接到某个东西就足够了,我只是不能在Google上挖掘任何东西。也许我应该用一些模糊的字符将数组内爆,然后以某种方式加密它?我不知道用什么方法加密.它没有太安全,cookie数据也没有那么敏感。

哦..。是的,加密算法应该允许我使用密钥/盐。mcrypt_encrypt似乎正在返回混乱的长期结果,但也许我没有使用正确的密码。哪个是最简单的密码(产生短的干净字符串)?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-05-07 22:44:32

序列化()会将您的信息从数组中获取到字符串--如果您只想混淆,可以通过编码()传递它--但不需要安全性。

如果您想要一些安全性-查看mcrypt和河豚:河豚例子

关于mcrypt

警告此函数在PHP7.1.0中已不再受欢迎。对这一职能的依赖是非常不鼓励的。

票数 11
EN

Stack Overflow用户

发布于 2009-05-07 23:14:35

根据gnarf的回答,这应该可以达到目的:

代码语言:javascript
复制
function encode_arr($data) {
    return base64_encode(serialize($data));
}

function decode_arr($data) {
    return unserialize(base64_decode($data));
}

以防其他人想要复制粘贴的解决方案。

票数 9
EN

Stack Overflow用户

发布于 2009-05-07 22:53:13

使用序列化()将数组转换为字符串,并取消序列化(),将其转换为数组。它比内爆和手动解析要好得多。对于简单的混淆(任何程序员都可以理解),您可以使用简单的base64编码,但是您应该仔细研究密室库以提供一些真正的安全性。

最好的办法可能是根本不将数组存储在cookie中。将数组存储在会话变量中,这样用户所看到的就是会话ID。当然,只有在会话期间需要数组时,才能使用该数组。

您在评论中说,这是为了“记住我”cookie,所以这是关于身份验证的。在这种情况下,不要将任何敏感信息存储在数组中。只需存储一个盐渍散列,然后使用它。例如,cookie可以包含用户名和咸哈希(数据库密码哈希+ ip地址范围)。当用户出现在站点上时,从数据库中的信息读取cookie并构造散列。如果它与cookie中的哈希匹配,则自动登录。如果没有,请删除cookie并假装它不存在。

这样,就不会将敏感数据存储在cookie中,您也不需要对其进行加密。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/837417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档