博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法复杂度攻击
阅读量:4191 次
发布时间:2019-05-26

本文共 1585 字,大约阅读时间需要 5 分钟。

1. Hashing

我们经常使用这样的字符串的Hash函数:

// 随手写的,未严格测试

unsigned long Hash(char* str)
{
    assert(NULL != str);
    unsigned long hash_val = 0xDEEDBEEFul;   // hash seed
    unsigned char* p = (unsigned char*)str;
    while (*p != '/0') {
        hash_val = 37 * hash_val + *p;
        ++p;
    }
    return hash_val;
}

《程序设计实践》第3章的Markov Chain的实现就使用了几乎一摸一样的Hash函数。这个函数的优点是速度快,英文单词的Hash值的分布也不错。但是,它太简单,容易受到攻击。攻击一般有两种方案:1) 构造一个输入序列,让序列中的每个字符串彼此不同,但Hash值相同;2) 构造一个输入序列,序列中每个字符串彼此不同,Hash值也不一定相同,但是这些Hash值对所用Hash Table的buckets数目同余(即hash_val % bucket_size 相等)。这样就能让Hash Table退化为链表。从而大大增加查找时间。()

要解决这个问题,需要用复杂得多的Hash函数(MD5、SHA-1),让攻击者(几乎)无法构造出Hash值相同的序列。

2. Regular Expressions

Regular Expression Engine 一般有三种:DFA (Deterministic Finite Automaton)、traditional NFA (Nondeterministic Finite Automaton)、POSIX NFA。这三种engines的功能一个比一个强,速度一个比一个慢。() ()

DFA 速度最快,可以保证线性时间(?)。NFA需要使用backtracking(回溯)技术,以支持backreference(向前引用),通常NFA是线性时间,但是其最坏情况是指数时间!

举例来说,表达式 (x+x+)+y 可以匹配 xxx...xxxy 但不能匹配 xxx...xxxx。在某个版本的Python中,这个表达式的匹配是指数时间。()

3. Quicksort

Quicksort的平均运行时间是O(N log N),但可能退化为 O(N^2),这是数据结构课程的必讲内容。C library 的 qsort 就不能保证一定是“快速”排序。()。C++ library 的 sort() 在改造之前,也可能退化为 O(N^2) 的龟速排序。SGI STL 的 sort() 使用了 a new, hybrid sorting algorithm, introsort (for introspective sort), that behaves almost exactly like median-of-3 quicksort for most inputs (and is just as fast) but which is capable of detecting when partitioning is tending toward quadratic behavior. By switching to heapsort in those situations, introsort achieves the same O(N logN) time bound as heapsort but is almost always faster than just using heapsort in the first place. () 。该排序算法的分析见 ()

转载地址:http://djaoi.baihongyu.com/

你可能感兴趣的文章
“一键删除中国App”应用海外走红,下载量破500万!谷歌:我先把你删除了
查看>>
罗永浩与银联合作直播,但因过程太流畅被网友调侃是录播
查看>>
Uzi宣布退役:身体条件不允许再继续战斗了!
查看>>
携程“线上摆摊”:1晚赚3105万
查看>>
Redmi 9或搭载联发科Helio G80:内置5000mAh电池 支持NFC
查看>>
AMD中国:没有对拼多多及其平台上任何店铺授权
查看>>
又一家互联网咖啡品牌要凉:papi酱、李诞曾代言,融资4亿打水漂
查看>>
iPhone 12将首次加入屏下指纹?都是为它铺路?
查看>>
全员摆摊开启!奉上摆摊“避坑”宝典
查看>>
期待已久!iPhone 13将使用带LTPO技术的OLED屏幕
查看>>
瑞幸咖啡股价再大涨超36% 目前总市值约13.87亿美元
查看>>
又开火了!马斯克炮轰贝佐斯:建议分拆亚马逊!
查看>>
微信朋友圈五月十大谣言:60岁以上老人打962899可享免费服务
查看>>
乐视网:受让方致新云网与融创、盈瑞汇鑫无关联关系
查看>>
微信号都可以改了,那淘宝号呢?官方硬核回应遭网友吐槽:你没有心!
查看>>
“你出命,我出钱!”靠玩命,他又做了一次首富
查看>>
拼多多宣布周涛出任“明星推荐官” 618直播带货1999元iPhone 11
查看>>
三星Galaxy Note 20系列或将于8月5日发布
查看>>
新款iPad Pro曝光:搭载A14x仿生芯片 支持5G
查看>>
身份证丢失后被入职16家公司,网友:现在身份证都能自己打工了?
查看>>