ASN.1中长度字段的编码方式有两种:短格式(Short Form)和长格式(Long Form)。短格式使用一个字节来表示长度,并且这个字节的最高位(bit 8)必须为0。如果长度大于127,则需要使用长格式,它首先用一个字节的0x80加上一个或多个后续字节来表示实际的长度。如果长度字段被错误地编码(例如,错误地使用了短格式来表示一个大于127的长度),那么解析器可能会读取错误的长度值。
例如下面的数据,就存在多处长度字段错误情况
BF51DFA0DD30D2801D312E332E362E312E342E312E35383830392E3939392E35383830392E31810103821449455350323032343035313530303036303030318301093095BF2D8191A0818EE3455A0A981099551731281908304F10A0000005591010FFFFFFFF89000011009F700100910E574737504F435F5175656374656C920E574737504F435F5175656374656C950102E3455A0A980193000010081481F64F10A0000005591010FFFFFFFF89000012009F700101910E574737504F435F5175656374656C920E574737504F435F5175656374656C9501025F3706112233DDCCFF
就像数据开头,tag是BF51,length是DF,正确的length应该是81DF
标签:字节,错误,ASN.1,bounds,length,格式,长度 From: https://www.cnblogs.com/ljmzj/p/18194105