Midi音频数据保护方法

文档序号:2830955阅读:539来源:国知局
专利名称:Midi音频数据保护方法
技术领域
本发明涉及一种音频数据的保护方法,特别是一种针对midi音频数据的 保护方法。
背景技术
多媒体数据的保护己经成为数字网络环境下,保护数字内容及相关权利 人经济利益的重要技术。尤其是随着网络音乐、手机娱乐等的兴起,音频数 据的保护显得更为重要。
在各种音频数据中,Midi音频数据占据了重要位置,主要原因有两个 一是midi文件占用的存储空间非常小,同样一段音乐,用WAV格式编码可能需 要几百K字节,而用midi格式编码只需要二三百字节,差1000倍,这就非常适 用于手机、移动网络等存储容量或者带宽有限的环境下;二是midi数据存储 的不是音频波形,而是演奏指令,改变指令的参数,可以模拟钢琴、小提琴、 笛子、鼓等几百种乐器的声音,并能控制每种"乐器"何时演奏、发声的长 短、强弱等,这非常类似交响乐,播放时通过播放器合成"交响乐"并发声, 由于midi这种独一无二的特点,使得它成为音乐家进行电子音乐创作的有力 工具。
然而与midi数据的广泛采用形成对比的是,目前还没有很好的针对midi 音频数据的保护方法。现有的音频数据保护方法大多是针对音频波形的,即 将音频数据抽象为一维信号来处理,这些方法均不适用于存储演奏指令的 midi音频。因此必须针对midi自身的特点,研究midi音频数据保护方法。

发明内容
本发明的目的是针对midi自身的特点,提供一种midi音频数据保护方法。 该方法能够判断出数据是否被篡改过,并确定哪些地方被篡改过、如何篡改 的,进而将被篡改的信息恢复过来。
本发明的技术方案是
1).从存储介质上读取一个midi文件;2) .对midi文件中的每一个轨迹块,找出轨迹块中的所有音符开指令和 音符关指令,将这些指令按照在原轨迹块中的顺序排列成一个指令串;
3) .对上述指令串依次进行压縮、加密、纠错三个编码操作,形成一个 新的0-l字符串,称为验证串;将验证串放在轨迹块结尾的复位指令中,作为 该指令的参数,并保存到存储介质;
4) .鉴别时,读取轨迹块结尾的复位指令的参数,即验证串,依次进行 纠错、解密、解压縮三个解码操作,得到一个解码后的指令串;
5) 根据解码后的指令串判断midi文件是否被篡改过,并确定哪些地方被 篡改过、如何篡改的,进而将被篡改的信息恢复过来如果篡改的类型是插 入了新的演奏指令,则删除轨迹块中被插入的指令;如果篡改的类型是删除 了原有指令,则从验证串中获得被删除的演奏指令,将该指令填入轨迹块中 被删除的位置;如果篡改的类型是修改了原有指令,则从读取的验证串中获 得被修改的演奏指令,用该指令覆盖轨迹块中被修改的指令;
或者仅仅根据解码后的指令串判断midi文件是否被篡改过,并确定哪些 地方被篡改过、如何篡改的。
本发明与其他音频数据保护方法相比具有以下特点 针对midi音频存储演奏指令的特点而设计。
直接对演奏指令进行操作,没有对音频数据进行任何修改,具有完全的 透明性。
能够抵抗指令顺序调整、音频数据修改(滤波、加噪、重采样等)、插入 /删除指令、截取音乐片段等多种攻击,具有鲁棒性。
不同于一般的通信系统用哈希函数或者消息鉴别码防篡改,本发明中的 加密操作具有防篡改的功能,不知道密钥的用户无法正确加密,保证了系统 的安全性。除此之外,加密/解密操作还可以恢复消息,因此本发明不仅能够 判断出数据是否被篡改过,还能够确定哪些地方被篡改过、如何篡改的,并 将被篡改的信息恢复过来。
纠错编码在一定程度上可以修正对验证串的篡改,防止了由于验证串本 身的错误,而将合法文件误判为被篡改过的文件这种情况的发生,提高了可 用性。


图l保护过程。 图2生成指令串。 图3修改轨迹块。 图4鉴别过程。
图5读取最后一个指令ff的附加信息。 图6判断过程。 图7恢复轨迹块。
具体实施例方式
图l表示的是midi音频数据的保护过程。从存储介质上读取一个midi文件 100。 midi文件由若干个轨迹块组成,对每一个轨迹块,进行同样的操作。首 先根据轨迹块的内容生成一个指令串300,对该指令串依次进行压縮编码400、 加密500、纠错编码600,形成一个0-l字符串,称为验证串,将验证串写回轨 迹块,即修改轨迹块700。所有轨迹块处理完毕之后,将新生成的midi文件保 存到存储介质800。
其中的压縮编码400、加密500、纠错编码600可以分别任意选用一种无损
压縮编码算法、对称加密算法和纠错编码算法。 图2表示的是生成指令串的过程。
为了更清楚地表示该过程300,先来简单介绍一下midi指令。所谓的midi 指令是一个8位的二进制数,占用1个字节,指令前后有参数,参数的长度可 能是1个字节,也可能是多个字节,后面用十六进制形式表示指令和参数的内 容。
midi中对音乐演奏起主要作用的是音符开指令9x和音符关指令8x,其中 的"x"表示指令中的低4位可以取"0" ~ "F"之间的所有值,实际上这低4 位表示的是音符发声所用的通道。8x/9x指令的格式是"指令开始时间"+ "8x/9x" + "音符编号"+ "音符力度",前后共有三个参数。其中"指令开 始时间"占用l-4个字节,"音符编号"和"音符力度"各占用l个字节》整个 指令占用4-7个字节。例如"00 90 48 64"指令,"00"表明在音乐一开始播 放的时候就执行这个指令,"90"表明这个指令的作用是通过通道O演奏一个
音符,"48"表明这个音符是短笛,"64"表明短笛的发声力度是64。 下面具体介绍生成指令串的过程300。
指令串记录在变量c中,它一开始为一个空串310。从前到后扫描整个轨 迹块, 一旦找到一个8x或者9x指令,就将整个8x/9x指令,即"指令开始时间" + "8x/9x" + "音符编号"+ "音符力度"连接在变量c的末尾330,直到整个 轨迹块都处理完毕。
图3表示的是修改轨迹块的过程。
为了更清楚地表示该过程700,先来简单介绍一下轨迹块的头和尾。轨迹 块的头由8个字节"4d 54 72 6b nn nn nn nn"组成,其中"nn nn nn nn" 表示该轨迹块除了这8个字节的头之外还包括的字节数。轨迹块的末尾为一个 复位指令ff,该ff指令的格式是"00 ff 2f 00",最后一个字节"00"表示 该指令的后面有O个字节的附加信息,这是ff指令后的第2个参数。下面具体 介绍修改轨迹块的过程700。
先找到轨迹块的头710,修改其中的nn nn nn nn二nn nn nn nn+ "验证串 的字节数"720,即增加轨迹块的长度,增加的长度为验证串的字节数。再找 到轨迹块的最后一个指令ff730,将其后第2个参数"00"修改"验证串的字 节数"740,即增加指令ff的长度,最后将验证串拷贝到轨迹块的末尾750, 作为ff指令的第3个参数,即附加信息。
图4表示的是鉴别过程。从存储介质上读取一个midi文件100。对每一个 轨迹块进行同样的操作。首先读取最后一个指令ff的附加信息900,对该附加 信息依次进行纠错解码IOOO、解密IIOO、解压縮1200,重新得到验证串。然 后根据轨迹块的内容生成指令串300。对比验证串和指令串,做出判断1300。 当所有的轨迹块都处理完毕,则将恢复回原状的midi文件保存到存储介质 800,并生成篡改报告1400,指出数据是否被篡改、何处被篡改、如何篡改。
其中的纠错解码IOOO、解密IIOO、解压縮1200要选用分别与纠错编码600、 加密500、压縮编码400对应的算法。
图5表示的是读取最后一个指令ff的附加信息的过程。找到轨迹块的最后 一个指令ff910,读取ff后的第2个字节的值并将此值赋给变量L920,这个值 就是附加信息的字节数。从ff后第3个字节开始,读取L个字节的内容930,即 附加信息。
图6表示的是判断过程。对比验证串和指令串,如果两者相同,可以下结 论"该轨迹块未被篡改过"。如果两者不同,可以下结论"该轨迹块被篡改过"。
找出两个字符串中所有的不同1310,包括插入、删除、修改等各种情况,可
以下结论"所有不同的地方就是被篡改过的地方"。根据验证串还可以恢复原
始轨迹块1320。
其中找出两个字符串中所有的不同1310和根据验证串恢复原始轨迹块 1320是可选的,可以根据实际应用的需要,决定是否执行这两个操作,也可 以只选择其中一个来执行。
图7表示的是恢复轨迹块的过程。如果篡改的类型是插入了新的演奏指 令,则删除轨迹块中被插入的指令1321。如果篡改的类型是删除了原有指令, 则从读取的验证串中获得被删除的8x/9x指令,将该指令及其前后三个参数填 入轨迹块中被删除的位置1322。如果篡改的类型是修改了原有指令,则从读 取的验证串中获得被修改的8x/9x指令,用该指令及其前后三个参数覆盖轨迹 块中被修改的指令1323。
将恢复回原状的midi文件保存到存储介质,并生成篡改报告,指出数据 是否被篡改、何处被篡改、如何篡改。
权利要求
1.一种Midi音频数据保护方法,其特征在于,包括以下步骤1).从存储介质上读取一个midi文件;2).对midi文件中的每一个轨迹块,找出轨迹块中的所有音符开指令和音符关指令,将这些指令按照在原轨迹块中的顺序排列成一个指令串;3).对上述指令串依次进行压缩、加密、纠错三个编码操作,形成一个新的0-1字符串,称为验证串;将验证串放在轨迹块结尾的复位指令中,作为该指令的参数,并保存到存储介质;4).鉴别时,读取轨迹块结尾的复位指令的参数,即验证串,依次进行纠错、解密、解压缩三个解码操作,得到一个解码后的指令串;5)根据解码后的指令串判断midi文件是否被篡改过,并确定哪些地方被篡改过、如何篡改的,进而将被篡改的信息恢复过来如果篡改的类型是插入了新的演奏指令,则删除轨迹块中被插入的指令;如果篡改的类型是删除了原有指令,则从验证串中获得被删除的演奏指令,将该指令填入轨迹块中被删除的位置;如果篡改的类型是修改了原有指令,则从读取的验证串中获得被修改的演奏指令,用该指令覆盖轨迹块中被修改的指令;或者仅仅根据解码后的指令串判断midi文件是否被篡改过,并确定哪些地方被篡改过、如何篡改的。
全文摘要
Midi音频数据保护方法属于音频数据领域。现有的音频数据保护方法将音频数据抽象为一维信号来处理,这并不适用于存储演奏指令的midi音频。本发明对midi文件中的每一个轨迹块,找出轨迹块中的所有音符开指令和音符关指令,将这些指令按照在原轨迹块中的顺序排列成一个指令串;依次进行压缩、加密、纠错三个编码操作,形成一个新的0-1字符串称为验证串;将验证串放在轨迹块结尾的复位指令中,作为该指令的参数,并保存到存储介质;鉴别时,读取轨迹块结尾的复位指令的参数,即验证串,依次进行纠错、解密、解压缩三个解码操作,得到一个解码后的指令串;判断midi文件是否被篡改过,并确定哪些地方被篡改过、如何篡改的,进而将被篡改的信息恢复过来。
文档编号G10H1/00GK101354883SQ20081011969
公开日2009年1月28日 申请日期2008年9月5日 优先权日2008年9月5日
发明者楠 姜 申请人:北京工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1