PageSourceSearch

https://1dayluo.github.io/assets/length-extension-attack-CEXOp4qV.js

js 1dayluo.github.io collected 2026-10-03 08:32:06 UTC 20,075 bytes, 6 lines download raw bytes

1import{_ as o}from"./ValaxyMain.vue_vue_type_script_setup_true_lang-BtF6SIE9.js";import{b as p,e as F,w as e,f as g,a as c,p as k,r as a,g as i,h as s}from"./app-kqUif9qg.js";const D=i("p",null,"关键词:MD5, SHA-1,Length Extension Attack",-1),A=i("h2",{id:"outline",tabindex:"-1"},[s("Outline "),i("a",{class:"header-anchor",href:"#outline","aria-label":'Permalink to "Outline"'},"​")],-1),u=i("p",null,[s("网站通常会hash对应的secret以防止被篡改。而Length extension attack是指攻击者使用已知hash值的长度和hash算法类型,构造出新的有效hash值,而"),i("strong",null,"无需知道"),s("原始数据的内容。攻击成功后,攻击者可以向hash后的数据追加新的数据并重新计算hash值,而该hash值仍将保持有效。这种攻击通常会影响使用MD5和SHA-1等算法的网站。")],-1),E=i("p",null,"备注:",-1),y=i("ul",null,[i("li",null,"可以通过data长度判断加密方式,例如128可能是MD5(it’s the most common 128-bit hashing algorithm)")],-1),m=i("h2",{id:"基础",tabindex:"-1"},[s("基础 "),i("a",{class:"header-anchor",href:"#基础","aria-label":'Permalink to "基础"'},"​")],-1),_=i("p",null,"首先要对散列函数的基础概念有所了解.散列函数具有以下特性:",-1),f=i("ol",null,[i("li",null,"散列函数的运算过程是不可逆的,这个称为散列函数的单向性。"),i("li",null,"对于一个已知的消息及其散列值,要找到另外一个消息使其获得相同的散列值是不可能的,这个特性称为散列函数的弱碰撞性。这个特性可以用来防止消息伪造。"),i("li",null,"任意两个不同消息的散列值一定不同。"),i("li",null,"对原始消息长度没有限制。")],-1),C=i("p",null,"还有加密过程也是前置知识.",-1),x=i("h2",{id:"构造过程",tabindex:"-1"},[s("构造过程 "),i("a",{class:"header-anchor",href:"#构造过程","aria-label":'Permalink to "构造过程"'},"​")],-1),b=i("p",null,"加密函数如下:",-1),v=i("div",{class:"language-php vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"php"),i("pre",{class:"shiki shiki-themes material-theme-darker material-theme-lighter vp-code"},[i("code",{"v-pre":""},[i("span",{class:"line"},[i("span",{style:{"--shiki-dark":"#82AAFF","--shiki-light":"#6182B8"}},"HASH"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"(["),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"SECRET"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"]["),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"DATA"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"])")])])]),i("button",{class:"collapse"})],-1),B=i("p",null,"攻击者则需要通过以下方式去计算",-1),w=i("div",{class:"language-php vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"php"),i("pre",{class:"shiki shiki-themes material-theme-darker material-theme-lighter vp-code"},[i("code",{"v-pre":""},[i("span",{class:"line"},[i("span",{style:{"--shiki-dark":"#82AAFF","--shiki-light":"#6182B8"}},"HASH"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"(["),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"SECRET"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"]["),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"DATA"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"]["),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"PADDING"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"]["),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"SUFFIX"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"])")])])]),i("button",{class:"collapse"})],-1),S=i("p",null,"其中secret为用于保护signature的secret,data为signed后的字符串",-1),$=i("p",null,"攻击者需要知道对应的[SECRET]的size,以及[DATA]从而计算[PADDING]",-1),M=i("p",null,"类似于CBC(我是说将第一次生成的结果作为下一次输入的一部分) 这里的长度攻击是从中间状态继续进行hash计算.",-1),P=i("p",null,[s("具体的方式如下(总结自"),i("a",{href:"https://github.com/iagox86/hash_extender",target:"_blank",rel:"noreferrer"},"github"),s("),先假设前提:")],-1),T=i("figure",null,[i("img",{src:"https://i.imgur.com/RPMarJU.png",alt:"Untitled",loading:"lazy",decoding:"async"})],-1),R=i("p",null,[s("首先,服务器有一个初始的输入"),i("code",null,"secretdata"),s(",并计算了其MD5 hash值:")],-1),H=i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes material-theme-darker material-theme-lighter vp-code"},[i("code",{"v-pre":""},[i("span",{class:"line"},[i("span",null,"6ee582a1669ce442f3719c47430dadee")])])]),i("button",{class:"collapse"})],-1),I=i("p",null,[s("然后,攻击者想在"),i("code",null,"secretdata"),s("后面追加"),i("code",null,"append"),s(",并伪造"),i("code",null,"secretdataappend"),s("的hash值,以骗过服务器。但是攻击者不知道"),i("code",null,"secret"),s("的值。那么如何计算"),i("code",null,"secretdataappend"),s("的hash值呢?攻击者的方法是:")],-1),L=i("ol",null,[i("li",null,[i("p",null,[s("已知"),i("code",null,"secretdata"),s("的hash值"),i("code",null,"6ee582a1669ce442f3719c47430dadee"),s("。这是MD5函数计算完成后的状态。")])]),i("li",null,[i("p",null,[s("攻击者创建一个新的MD5上下文,并设置其初始状态为上一步得到的状态。这样,这个上下文就像是在"),i("code",null,"secretdata"),s("后继续运行的。")])]),i("li",null,[i("p",null,[s("攻击者在这个上下文中再hash "),i("code",null,"append"),s(" 得到的hash值就是"),i("code",null,"secretdataappend"),s("的hash值。")])]),i("li",null,[i("p",null,[s("攻击者可以将"),i("code",null,"dataappend"),s("和伪造的hash值发送给服务器。服务器会在前面加上"),i("code",null,"secret"),s(",计算hash值,得到的结果和攻击者一致,于是就被欺骗了。所以这个攻击的关键就是利用了MD5的长度扩展性质:知道一个hash值,可以继续从那个状态开始hash更长的输入。这就是所谓的长度扩展攻击。")])])],-1),N=i("h3",{id:"举例",tabindex:"-1"},[s("举例 "),i("a",{class:"header-anchor",href:"#举例","aria-label":'Permalink to "举例"'},"​")],-1),O=i("p",null,"引用wiki的例子, 例如:",-1),G=i("div",{class:"language-php vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"php"),i("pre",{class:"shiki shiki-themes material-theme-darker material-theme-lighter vp-code"},[i("code",{"v-pre":""},[i("span",{class:"line"},[i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"Original Data"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},":"),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}}," count"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"="),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"10"),i("span",{style:{"--shiki-dark":"#C792EA","--shiki-light":"#9C3EDA"}},"&"),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"lat"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"="),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"37"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"."),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"351"),i("span",{style:{"--shiki-dark":"#C792EA","--shiki-light":"#9C3EDA"}},"&"),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"user_id"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"="),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"1"),i("span",{style:{"--shiki-dark":"#C792EA","--shiki-light":"#9C3EDA"}},"&"),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"long"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"=-"),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"119"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"."),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"827"),i("span",{style:{"--shiki-dark":"#C792EA","--shiki-light":"#9C3EDA"}},"&"),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"waffle"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"="),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}}
1,"eggo")]),s(`
2`),i("span",{class:"line"},[i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"Original Signature"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},":"),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}}," 6"),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"d5f807e23db210bc254a28be2d6759a0f5f5d99")])])]),i("button",{class:"collapse"})],-1),U=i("p",null,"这个请求负责将10个类型为eggo的waffle运送到user_id为1的用户所指定的位置,当且仅当signature对用户来说是有效的.",-1),V=i("p",null,"可以设计成以下:",-1),z=i("div",{class:"language-php vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"php"),i("pre",{class:"shiki shiki-themes material-theme-darker material-theme-lighter vp-code"},[i("code",{"v-pre":""},[i("span",{class:"line"},[i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"Desired "),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"New"),i("span",{style:{"--shiki-dark":"#FFCB6B","--shiki-light":"#E2931D"}}," Data"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},":"),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}}," count"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"="),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"10"),i("span",{style:{"--shiki-dark":"#C792EA","--shiki-light":"#9C3EDA"}},"&"),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"lat"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"="),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"37"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"."),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"351"),i("span",{style:{"--shiki-dark":"#C792EA","--shiki-light":"#9C3EDA"}},"&"),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"user_id"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"="),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"1"),i("span",{style:{"--shiki-dark":"#C792EA","--shiki-light":"#9C3EDA"}},"&"),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"long"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"=-"),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"119"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"."),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"827"),i("span",{style:{"--shiki-dark":"#C792EA","--shiki-light":"#9C3EDA"}},"&"),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"waffle"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"="),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"eggo"),i("span",{style:{"--shiki-dark":"#C792EA","--shiki-light":"#9C3EDA"}},"&"),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"waffle"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"="),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"liege")])])]),i("button",{class:"collapse"})],-1),J=i("p",null,"这里message在遇到重复会优先选择最后一个waffle的值",-1),X=i("p",null,[s("在长度攻击这里,可以将hash(上面的 "),i("code",null,"signature"),s(" ) 作为hashing function的状态输入, 并继续原来得请求.这里原始key("),i("code",null,"count=10&lat=37.351&user_id=1&long=-119.827&waffle=eggo"),s(")的长度是14, 可以伪造请求长度看服务器接受哪个长度.构造新的数据:")],-1),Z=i("div",{class:"language-php vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"php"),i("pre",{class:"shiki shiki-themes material-theme-darker material-theme-lighter vp-code"},[i("code",{"v-pre":""},[i("span",{class:"line"},[i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"New"),i("span",{style:{"--shiki-dark":"#FFCB6B","--shiki-light":"#E2931D"}}," Data"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},":"),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}}," count"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"="),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"10"),i("span",{style:{"--shiki-dark":"#C792EA","--shiki-light":"#9C3EDA"}},"&"),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"lat"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"="),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"37"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"."),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"351"),i("span",{style:{"--shiki-dark":"#C792EA","--shiki-light":"#9C3EDA"}},"&"),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"user_id"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"="),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"1"),i("span",{style:{"--shiki-dark":"#C792EA","--shiki-light":"#9C3EDA"}},"&"),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"long"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"=-"),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"119"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"."),i("span",{style:{"--shiki-dark":"#F78C6C","--shiki-light":"#F76D47"}},"827"),i("span",{style:{"--shiki-dark":"#C792EA","--shiki-light":"#9C3EDA"}},"&"),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"waffle"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"="),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"eggo\\x80\\x00\\x00")]),s(`
3`),i("span",{class:"line"},[i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"          \\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00")]),s(`
4`),i("span",{class:"line"},[i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"          \\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00")]),s(`
5`),i("span",{class:"line"},[i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"          \\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00")]),s(`
6`),i("span",{class:"line"},[i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"          \\x00\\x00\\x00\\x02\\x28"),i("span",{style:{"--shiki-dark":"#C792EA","--shiki-light":"#9C3EDA"}},"&"),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"waffle"),i("span",{style:{"--shiki-dark":"#89DDFF","--shiki-light":"#39ADB5"}},"="),i("span",{style:{"--shiki-dark":"#EEFFFF","--shiki-light":"#90A4AE"}},"liege")])])]),i("button",{class:"collapse"})],-1),j=i("p",null,[s("在这里DATA后跟着PADDING,然后SUFFIX为 "),i("code",null,"&waffle=liege")],-1),W=i("p",null,[s("其中 "),i("code",null,"0x80"),s(" 为128 为原始长度.这里大多数算法包括MD4,MD5,RIPEMD-160,SHA-0,SHA-1,SHA-256都是string+padding直到长度为56 bytes(mod 64)然后再加一个8 bytes 的encoded 长度字段的大小端/an 8-byte little-endian length")],-1),q=i("p",null,"这里80 00 00 …. 作为PADDING部分.",-1),K=i("p",null,[s("这里我觉得wiki的解释里的例子不太好,见github这个利用脚本的README里的讲解吧("),i("a",{href:"https://github.com/iagox86/hash_extender",target:"_blank",rel:"noreferrer"},"https://github.com/iagox86/hash_extender"),s(")")],-1),Q=i("h2",{id:"工具",tabindex:"-1"},[s("工具 "),i("a",{class:"header-anchor",href:"#工具","aria-label":'Permalink to "工具"'},"​")],-1),Y=i("p",null,[i("a",{href:"https://github.com/iagox86/hash_extender",target:"_blank",rel:"noreferrer"},"https://github.com/iagox86/hash_extender")],-1),ii=i("p",null,[i("code",null,"git clone"),s(" 到本地后用makefile自动化编译.如果make报错的话需要从Makefile里移é
6™¤ "),i("code",null,"Werror")],-1),si=i("h2",{id:"reference",tabindex:"-1"},[s("Reference "),i("a",{class:"header-anchor",href:"#reference","aria-label":'Permalink to "Reference"'},"​")],-1),ei=i("ul",null,[i("li",null,[i("a",{href:"https://en.wikipedia.org/wiki/Length_extension_attack",target:"_blank",rel:"noreferrer"},"https://en.wikipedia.org/wiki/Length_extension_attack")]),i("li",null,"Pentesterlab:Green"),i("li",null,[i("a",{href:"https://github.com/iagox86/hash_extender",target:"_blank",rel:"noreferrer"},"https://github.com/iagox86/hash_extender")]),i("li",null,[i("a",{href:"https://m.freebuf.com/articles/database/137129.html",target:"_blank",rel:"noreferrer"},"https://m.freebuf.com/articles/database/137129.html")])],-1),ki={__name:"length-extension-attack",setup(ti,{expose:r}){const l=JSON.parse('{"title":"Length Extension Attack","description":"","frontmatter":{"title":"Length Extension Attack","date":"2023-05-23T05:16:32.000Z","tags":["刷题","学习笔记","加密攻击"],"published":true,"hideInList":false,"feature":null,"isTop":false},"headers":[{"level":2,"title":"Outline","slug":"outline","link":"#outline","children":[]},{"level":2,"title":"基础","slug":"基础","link":"#基础","children":[]},{"level":2,"title":"构造过程","slug":"构造过程","link":"#构造过程","children":[{"level":3,"title":"举例","slug":"举例","link":"#举例","children":[]}]},{"level":2,"title":"工具","slug":"工具","link":"#工具","children":[]},{"level":2,"title":"Reference","slug":"reference","link":"#reference","children":[]}],"relativePath":"pages/posts/history/length-extension-attack.md","path":"/home/runner/work/1dayluo.github.io/1dayluo.github.io/pages/posts/history/length-extension-attack.md","lastUpdated":1781453302000}'),n=c(),h=l.frontmatter||{};return n.meta.frontmatter=Object.assign(n.meta.frontmatter||{},l.frontmatter||{}),k("pageData",l),k("valaxy:frontmatter",h),globalThis.$frontmatter=h,r({frontmatter:{title:"Length Extension Attack",date:"2023-05-23T05:16:32.000Z",tags:["刷题","学习笔记","加密攻击"],published:!0,hideInList:!1,feature:null,isTop:!1}}),(t,li)=>{const d=o;return p(),F(d,{frontmatter:g(h)},{"main-content-md":e(()=>[D,A,u,E,y,m,_,f,C,x,b,v,B,w,S,$,M,P,T,R,H,I,L,N,O,G,U,V,z,J,X,Z,j,W,q,K,Q,Y,ii,si,ei]),"main-header":e(()=>[a(t.$slots,"main-header")]),"main-header-after":e(()=>[a(t.$slots,"main-header-after")]),"main-nav":e(()=>[a(t.$slots,"main-nav")]),"main-content":e(()=>[a(t.$slots,"main-content")]),"main-content-after":e(()=>[a(t.$slots,"main-content-after")]),"main-nav-before":e(()=>[a(t.$slots,"main-nav-before")]),"main-nav-after":e(()=>[a(t.$slots,"main-nav-after")]),comment:e(()=>[a(t.$slots,"comment")]),footer:e(()=>[a(t.$slots,"footer")]),aside:e(()=>[a(t.$slots,"aside")]),"aside-custom":e(()=>[a(t.$slots,"aside-custom")]),default:e(()=>[a(t.$slots,"default")]),_:3},8,["frontmatter"])}}};export{ki as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.