首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >压缩+编码+检查+数组序列化的最快组合是什么?

压缩+编码+检查+数组序列化的最快组合是什么?
EN

Stack Overflow用户
提问于 2012-01-25 15:07:17
回答 2查看 837关注 0票数 1

我需要一种功能的组合:

数组序列化(没有对象,字符串的键值对为3-7,上面没有references)

  • data有效性检查)(是否更好的哈希位于上面的array?)

  • encryption中(是否有任何加密方法验证上述information?)

  • compression的解密(我不确定是否值得:带宽/ CPU时间)

)

...of数组.

每件事都应该为速度而优化。

对于序列化数组,我考虑使用json_encode()而不是序列化(),因为它更快。见Preferred method to store PHP arrays (json_encode vs serialize)

对于数据有效性检查,我正在考虑使用sha1(),但是我考虑使用crc32,因为它更快,而且我不认为冲突很近。见Fastest hash for non-cryptographic uses?

为了加密,我做了:

代码语言:javascript
复制
<?php

function encode($pass, $data) {
  return mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $pass, $data, MCRYPT_MODE_ECB);
}

function decode($pass, $data) {
  return mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $pass, $data, MCRYPT_MODE_ECB);
}

$rand = str_repeat(rand(0, 1000), 5);

$start = microtime(true);
for($i = 0; $i <= 10000; $i++){
  encode('pass', $rand);
}

echo 'Script took ' . (microtime(true) - $start) . ' seconds for encryption<br/>';

$start = microtime(true);
for($i = 0; $i <= 10000; $i++){
  encode('pass', $rand);
}

echo 'Script took ' . (microtime(true) - $start) . ' seconds for decryption';

结果如下:

代码语言:javascript
复制
Script took 1.8680129051208 seconds for encryption
Script took 1.8597548007965 seconds for decryption

我宁愿避免任何随意性。我知道CBC模式更安全,但它也更慢。

对于压缩,考虑到结果字符串是二进制的和短的,我不知道使用什么更好。

是否有任何不需要编码才能将结果字符串设置为cookie的压缩?例如,我知道sha1()只返回数字和字母。

这是一个复杂的问题。所以请随意指出任何错误或不准确的地方。它包含了许多主题,但最简单的问题是如何安全、快速地对数组进行加密/解密,同时对数组进行小的表示。

这点菜对吗?

是否需要数据验证,因为在数据被更改的情况下,产生的JSON很有可能无效吗?

是否有一个已经结合了这些功能或其中一些功能的函数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-25 16:44:23

我知道CBC模式更安全,但它也更慢。

而不是欧洲央行?只有在数据超过几个块的情况下。

如果您想要最快的加密算法,那么没有什么可以代替自己来测试它了--奇怪的是,PHP的sha1()实现比它的md5()要快得多(我知道这些都是散列)--这说明性能与算法一样依赖于实现。

你为什么要确认它的价值?如果它是一个加密的数据报,那么内容对用户来说是不透明的--如果他们试图篡改它,那么它很可能无法解压,如果它仍然解压缩,那么解码就会失败,但是在远程情况下,如果这两种情况都没有发生,就应该很容易检查其他修改--即使是嵌入式CRC32看起来也是过火了。

,以便将结果字符串设置为cookie。

听起来你在用很多花哨的加密来掩盖你的应用程序的基本不安全性--它很可能会被重播攻击。另外还有一个复杂的问题,就是确保您的数据符合cookie。为什么不使用带有随机发送客户端值的服务器端会话(如果您想要实现一个记住的me类型函数,并且仍然有一个常规会话,则不必使用PHP会话处理程序)。

票数 3
EN

Stack Overflow用户

发布于 2012-01-25 16:57:27

在我看来,只使用压缩就足够了。要逆向工程压缩,需要很长时间。我可以推荐哈夫曼压缩。

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

https://stackoverflow.com/questions/9004919

复制
相关文章

相似问题

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