永发信息网

如何处理故意构造相同hash的字符串进行攻击

答案:1  悬赏:0  手机版
解决时间 2021-01-26 18:23
如何处理故意构造相同hash的字符串进行攻击
最佳答案
思路:
1、首先采用命A=0,C=1,G=2,T=3. 就相当于4进制数字,然后采用karp-Rabin算法转换成唯一十进制数字。由于用此算法的哈希函数为:hash(value)=value*(4^(k-q-1));
value是该字符对应的值,k是kmer长度,q是此字符在字符串的位置范围在[0-(q-1)]。然后把一个kmer里面所有字符的hash值求和就行了。
2、那么很容易看出来,对于连续的下害常愤端莅得缝全俯户一个Kmer,就有推理公式了 hashNew=addValue+(hashOld-deleteValue*(4^(k-1)))*4; hashNew就是往右平移一个字符的kmer hash值,hashOld就是平移之前的值,addValue就是平移后右边多的一个字符,deleteValue就是平移后左边少的一个字符。这样整个hash表建立的时间复杂度约为O(m+k),m是整个文本长度。
3、由于kmer长度如果过长,其hash值过大,会造成内存不够溢出的现象,所以kmer内部定死为10 。那么问题就来了,如何应对不同的kmer值。分三种情况。
第一种:q>10
这种可以将kmer以10为单位,将hash表中对应值取出,然后对结果进行分析,这边分析方法为建立两个数组一个二维数组unionName储存位置关系,一个一维数组unionScore,计数用。 思路就是首先第一轮初始化unionName[Name][Pos]全部赋值Pos 并初始化unionScore,然后再第二轮匹配如果unionName[Name][Pos-cycle]=Pos-1则将其赋值为当前Pos,cycle为当前循环次数。并将当前循环数存入unionScore[NAME]中。最后当unionScore[NAME]值也就是循环数为k-1,即我们需要的交集了。
第二种:q=10
直接求出hash值,取出相应的值即可。
第三种:q<10
可以用前缀种子+后缀种子交集产生。
前缀种子:在字符串后面补字符直到长度等于K,这个很容易看出来 最小是全补A,最大是全补T,然后将最小值到最大值之间的hash值即为所求。
后缀种子:后缀种子和前缀种子不同就是在字符串左边补齐字符。所以此时需要进行变换。只要对前置种子产生的值变化下就行了。(preValue-minValue)*(4^(K-q))+hash(p) 。其中preValue就是对应的前置种子的hash值,minValue就是前置种子中最小值也就是全补A的情况,hash(p)就是字符串长度为p时候的hash值。
交集就是先求后缀种子所有的值,再加上 前缀种子中起始位置在[0-(k-1)]中的值。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
赵雅琳是真的非礼过exo吗?
饥饿的鲨鱼哪个鲨鱼最厉害
大洋岛专柜地址好找么,我有些事要过去
兴源家电销售地址在什么地方,我要处理点事
木铎的意思是什么啊?知道的请说下!
采矿工程硕博连读专业有哪些学校
【搞笑iq题】求超搞笑的IQ题题目+答案
美宝莲纽约(大连麦凯乐西安路店)地址在哪,我
炸鱼的做法,红烧炸鱼怎么做好吃,红烧炸鱼的
债户的意思是什么啊?知道的请说下!
魔兽世界,为什么说法师是暴风的亲爹或者亲儿
6年级下册第二单元作文
“或是假命题 是“非为真命题 的 A.充分而不
教师节送老师巧克力的贺卡上该写什麽祝福的话
单选题植物顶端器官中的细胞能不断得到水分,
推荐资讯
上海2011年中考状元说过
请问雅姿眼霜美国产和国产的有什么区别?
看图猜成语一个乐字在八个其字中间的答案
北京汉丽轩烤肉自助餐厅(金博大店)在什么地方
我安装CimatronE8.5 怎么打不开呀,都按视频
甲骨文和IBM哪个强?
奋进的意思是什么啊?知道的请说下!
那个刚才我家杀了一只鸡,不过打开它的胸膛有
“…从西班牙向西航行,横渡大西洋,可以到达
怎样去除嘴上的角质层?
g564到北京西站在哪个出口
默默无闻的工作真的好吗?感觉自己这样做了,功
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?