医学视频加解密播放器的研究与实现
2017-01-06马光赵佩瑾崔茂香
马光,赵佩瑾,崔茂香
沧州医学高等专科学校 病理教研室,河北 沧州 061001
医学视频加解密播放器的研究与实现
马光,赵佩瑾,崔茂香
沧州医学高等专科学校 病理教研室,河北 沧州 061001
医学视频加密对于保护医疗数据的安全具有重要作用。本文针对医学视频文件数据量大、实时性要求高的特点,采用选择性加密算法和数据流技术,基于Delphi开发平台设计制作了医学视频加解密播放器,较好地解决了医学视频加解密问题,既能满足医学信息化的需求,又可有效地保证视频数据的安全性。
医学视频;播放器;视频加密;医院数字化
0 引言
随着计算机科学和通信技术的发展,视频多媒体信息得到了广泛应用,与此同时知识产权和数据安全问题也日渐突出。早期的安全方法主要依赖于权限控制,视频数据本身没有被加密,容易被非法拷贝、盗版、剽窃和篡改。因此,视频加密技术作为保证安全的基本手段,已成为信息安全领域非常热门的研究课题之一[1]。医学视频有着不同于一般视频的突出性特点,如真实性、完整性等。因为以医学题材为内容的视频中大多涉及患者的姓名、肖像、病史等个人信息;牵涉误诊、误治事件发生的概率,事关医疗事故纠纷的权威认证[2-3]。出于对版权、隐私和声誉等保护的需要,对医学视频数据安全性的研究迫在眉睫,同时考虑到军事医学视频的特殊性,医学视频文件的加密和保护工作就显得更为重要。当前流行的多媒体播放软件功能参差不齐,较难满足用户对视频播放和信息保护的双重需求。为此,本文基于Delphi开发平台,利用其功能强大的组件库制作出一款可支持多种媒体格式,并能对视频数据进行特殊加密的播放器。
1 视频文件加解密的设计
1.1 加解密算法
所谓加密是指以某种特殊的算法改变原有的可理解的信息数据(明文),使其成为无意义的数据内容(密文),使用者必须通过相应的解密方法,才能将密文还原成明文,而解密是加密的逆运算、逆过程[4]。数据加密过程是由形形色色的加密算法来具体实现的,例如选择性加密,又称部分加密,它充分考虑数据本身的特征及应用要求,仅对全部数据中的关键部分(重要数据)进行加密,用很小的计算复杂度来达到较高的安全性[5-6]。
视频文件一般由信息区、数据区和索引区三部分构成,其文件头中的各字节(信息区)保存着数据格式、压缩方式、播放速度等重要参数,医学视频也不例外。视频播放器通过这些参数来识别视频文件信息的有效性,如果受到破坏,则会妨碍视频数据的正确解码,使播放器不能识别标志信息而无法播放。而且视频数据具有编码结构特殊、数据量大、实时性要求高等特点,其加密算法在安全性、压缩比、计算量和数据可操作性等方面都有一定的要求。为满足这些要求,本文采用选择性加密算法,即利用视频数据结构的特性,仅加密医学视频文件头部信息,这样拥有解密密钥的播放器才能成功打开该视频文件;对视频文件的处理过程是:分发前加密→播放时解密→使用后加密,从而最大限度地确保数据的保密性和完整性。分析和实验表明,该算法具有简单易行、实时性强等特点,在安全性、计算量等指标上均能满足一般的应用需求[7]。
1.2 加解密方法
在计算机编程中,数据流是面向对象程序设计语言中的典型体现,它彻底地取代了早期利用函数实现输入输出的功能,同时也克服了利用函数实现输入输出功能的诸多弊端。对于“流”这一概念,可简单地理解为:流是建立在面向对象基础上的一种抽象地处理数据的工具,它定义了一些处理数据的基本操作,如读取数据、写入数据等,这样程序员只需掌握流的操作方法,而不用关心流中数据的真正去向。流不但能处理文件,还可处理动态内存、网络数据等多种数据形式。显然程序员若能掌握好对流的运用,在程序开发中会利用其便利性,就能够大大提高编程效率[8]。
高质量的视频是医学应用的内在需求,与普通视频相比,医学视频的主要特点是更加偏重于清晰度,也就是对图像分辨率的要求更高,致使其拥有海量的数据;而且加解密过程的计算量通常很大,但又必须实时处理,才能保证播放流畅。为了保证医学视频的质量并提高加解密速度,本文应用Delphi的流对象对医学视频文件进行操作来实现其加密和解密。在Delphi中所有流对象的基类为TStream类,其派生类中最常用的是内存流TMemoryStream,它在内存中建立一个流对象,基本方法和函数与文件流TFileStream相似。加密时,首先利用LoadFromFile和SaveToStream方法分别将视频文件SourceFile和密钥文件PassWord转换为内存流,再用Seek函数将指针移到密钥文件的末尾,最后使用CopyFrom方法将视频文件追加到密钥文件尾部,生成一个加密文件TargetFile,即两个流的合并(PassWord+SourceFile=TargetFile)。解密时,首先利用LoadFromFile方法将加密文件TargetFile转换为内存流,再用Position函数定位该流中存取指针的位置(密钥文件PassWord的长度),最后使用CopyFrom方法从指针的当前位置拷贝流中的所有数据。由于Delphi中的MediaPlayer组件不能直接播放内存流的数据,因此还须利用SaveToFile方法把该内存流保存为视频文件SourceFile,即两个流的分离(TargetFile-PassWord=SourceFile)[9]。这个加解密程序只是简单地把医学视频文件添加到密钥文件的尾部,以实现对视频数据的加密和保护。实际应用中可对视频文件流的头部信息采用异或运算或与随机数据混合进行加密,解密时只要根据加密算法的原理处理好其逆运算即可。
2 视频播放器的开发
2.1 设计开发平台
作为快速应用程序开发工具的代表,Delphi不仅是一个面向对象的可视化开发环境,而且提供了功能强大的可视化组件库,并具备快速的代码编译器、简捷的数据库引擎,深受广大程序开发人员的推崇与信赖。在Delphi中,组件是具有特定行为、一定属性及相应对象的预定义窗口,它是可视化编程的基础,是整个程序的核心元素。如多媒体播放器组件MediaPlayer,是一个进行音频和视频编程的绝好工具,它封装了Windows媒体组件接口的大量函数,用于控制多媒体设备。开发Delphi程序时,正确地选用组件,将有助于提高工作效率和代码准确率,并有利于软件调试和项目的工程化管理[10]。
2.2 设计开发过程
本文所设计的医学视频播放器按照预期的效果,包括播放控制模块、视频显示模块、信息提示模块以及系统控制模块等,见图1。在Delphi所提供的程序框架中,首先建立窗体,设计界面,然后采用面向对象、事件驱动的方法,逐步开发各个模块,最终制作出一个功能完善的个性化视频播放器,其效果见图2。
图1 视频播放器功能模块图
图2 视频播放器界面图
(1)播放控制模块。采用多媒体核心控制组件MediaPlayer,通过其对应的属性设置、事件调用与方法编写,实现对医学视频文件的播放与基本的播放控制,如播放、快进、停止等操作。此外添加两个滑动条组件TrackBar,并编写OnChange事件的响应代码分别用于当前视频文件播放进度的显示及动态调节、声卡音量输出大小的控制;通过按钮组件Button和键盘事件KeyDown,实现播放视图全屏模式与窗口模式的切换。
(2)视频显示模块。选用面板组件Panel作为视频显示窗口,同时设置MediaPlayer组件的Display属性为Panel。
(3)信息提示模块。使用标签组件Label和计时器组件Timer,并编写实现相应功能的程序代码,用来实时显示视频文件的当前播放状态、播放进度及其播放时长等有效信息。
(4)系统控制模块。应用Windows API函数ShellExecute打开.chm类型的帮助文件,为用户提供系统版本信息以及具体的使用方法。在“退出”按钮的OnClick事件中编写代码:Application.Terminate,终止应用程序的运行,使用户安全退出系统。
视频播放器在打开和关闭医学视频文件时,会分别调用视频光盘分发前编写的解密函数和加密函数,这样把视频播放与视频加解密有机地结合在一起,为使用者提供了方便同时也保证了重要医学视频内容的安全。
3 应用结果分析
3.1 安全性分析
本文采用的选择性加密算法不是直接对视频图像像素值进行加密,而是对视频编码过程中产生的关键信息加密,所以该算法不具有数据格式相容性,加密后的视频文件只有正确解密后才能播放。因此,使用Windows Media Player、暴风影音等流行的媒体播放软件,打开数据格式信息加密后的AVI、WMV等主流媒体格式的视频文件时,将难以识别该视频数据的操作信息而不能解码和播放,会出现“试图播放的文件的扩展名与文件格式不匹配”、“不是标准的视频文件”、“无法渲染文件”等提示,达到了对该视频文件加密的目的。另外,由于医学视频文件分发前进行过加密预处理,视频加解密播放器需拥有与每个数据包相对应的解密密钥,这也增加了非授权者破解的难度,使得加密更有效,数据更安全。
3.2 加解密速度
文件加解密过程的时间消耗包括准备时间和加解密时间,其中加解密前的准备时间主要用来完成数据的读写,在计算机性能和文件大小相同的条件下,数据读写的速度由编程所用的实现方法来决定;加解密时间是在加解密算法的控制下对数据进行变换所需的时间,这取决于算法的复杂程度。本文提出的加解密方案中,因采用Delphi“流”支持技术,大大提高了视频数据交换的速度,同时由于加解密只是对视频数据的头部信息作异或运算,可明显降低加解密操作的数据量和计算的复杂度。因此,本视频播放器具有较快的加解密速度,例如在酷睿CPU@2.93 GHz、内存2 GB的计算机上对大小为74 MB、时长为308 s的AVI视频文件进行加解密速度测试,所用的运行时间约为3 s,能较好地满足视频数据应用的实时性需求。
4 结束语
本播放器已用于《活体组织病理学检查》、《沧州市医疗纠纷尸体解剖检查》等视频系统的构建,应用结果表明:该播放器界面友好、使用简单,又具有加密效果好、复杂度适中、处理速度快等特点,是一款多种功能兼备的视频播放软件,这对医学信息安全的发展具有重要意义。由于开发经验欠缺,本播放器仍需要做进一步的改进:优化程序代码,进一步提高其稳定性和执行速度;加强对视频信息安全技术的研究,寻求更安全、更高效的加解密方法应用于本设计;根据实际需求,在界面布局、使用功能等方面进行进一步修改与完善。
[1] 赵霙頔.面向无线环境的H.264能量有效视频加密技术研究[D].北京:北京工业大学,2013.
[2] 孙海东.面向医学教育视频的垂直检索的研究[D].上海:第二军医大学,2011.
[3] 张俊,赵歆.浅谈我院视频监控系统建设[J].中国医疗设备,2015, 30(9):157-159.
[4] 刘兵,刘劲.Delphi实现对文档的加密解密[J].电脑编程技巧与维护,2009,(4):77-79.
[5] 林杨菲,叶少珍.一种医学影像数据选择性的加密方法[J].电子技术应用,2015,41(3):107-110.
[6] 廉士国,孙金生,王执铨.几种典型视频加密算法的性能评价[J].中国图象图形学报,2004,9(4):483-490.
[7] 朱庆生,刘金凤,葛亮,等.格式兼容的视频加密算法设计与实现[J].计算机工程,2010,36(20):145-149.
[8] 李慧,刘欣.Delphi程序开发范例宝典[M].北京:人民邮电出版社,2012.
[9] Delphi流的操作[EB/OL].(2014-12-03)[2015-12-15].http:// my.oschina.net/u/582827/blog/351964.
[10] 洪运国.Delphi程序设计[M].北京:北京理工大学出版社,2013.
Research and Implementation of Medical Video Encryption and Decryption Player
MA Guang, ZHAO Pei-jin, CUI Mao-xiang
Department of Pathology, Cangzhou Medical College, Cangzhou Hebei 061001, China
Medical video encryption plays a vital role in protecting the security of medical data. In view of the features of medical videos covering huge data and high real-time requirements, this paper proposed a selective encryption algorithm and data stream technology to solve the problem of medical video encryption, and used Delphi to design a video encryption and decryption player. This design not only can meet the needs of medical informatization, but also effectively ensure the high security of medical videos.
medical videos; video player; video encryption; hospital digitalization
TP311.52
A
10.3969/j.issn.1674-1633.2016.06.022
1674-1633(2016)06-0087-03
2015-12-28
2016-01-11
河北省高等学校人文社会科学研究项目(SZ2011366)。
作者邮箱:czyzvivid@126.com