具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
首先对本申请中涉及的术语进行解释:
在本发明实施例中的Microsoft.NET Framework是用于Windows的新托管代码编程模型,具体是用于构建具有视觉上引人注目的用户体验的应用程序,实现跨技术边界的无缝通信,并且能支持各种业务流程。
ADO.NET Entity Framework是微软以ADO.NET为基础所发展出来的对象关系对应(O/RMapping)解决方案,早期被称为ObjectSpace,现已经包含在Visual Studio2008ServicePack1以及.NET Framework3.5Service Pack1中发表。
反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象,具体地,可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型,然后,通过反射方法调用类型的方法或访问其字段和属性。
面向对象(Object Oriented,OO)是一种对现实世界理解和抽象的方法,是计算机编程技术[1]发展到一定阶段后的产物。早期的计算机编程是基于面向过程的方法,例如实现算术运算1+1+2=4,通过设计一个算法就可以解决当时的问题。随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题。通过面向对象的方式,将现实世界的物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程。同时,面向对象能有效提高编程的效率,通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统。面向对象是指一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的集合。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。
封装(Encapsulation):隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别。封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。
继承(Inherit):继承是面向对象语言的重要机制。借助继承,可以扩展原有的代码,应用到其他程序中,而不必重新编写这些代码。继承是指一个对象直接使用另一对象的属性和方法。
C#(C Sharp)是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员AndersHejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NETwindows网络框架的主角。
对象(Object)就是客观世界中存在的人、事、物体等实体在计算机逻辑中的映射。
根据本发明实施例的提供了一种对象加密存储系统。该系统可以包括:加密装置,设置在数据库的存储接口内,用于获取存储请求以及与存储请求对应的加密属性,在对数据对象中对应加密属性的属性数据进行加密得到加密对象之后,将加密对象保存入数据库,其中,存储请求携带数据对象。
采用本发明的方案,将加密装置设置入数据库的存储接口内,在接收到用户的存储请求之后,直接对数据对象中需要加密的数据加密后才保存加密后的加密对象,从而可以实现数据存取系统架构中对象属性级别的自动加密,开发者无需手动开发加密/解密的过程,仅需要配置需要加密的属性即可,从而解决了现有技术中数据存取系统架构中加密对象数据的过程复杂、开发效率低下的问题,实现了数据存取系统架构中自动加密,极大的降低了手动加密解密开发成本,并且简化了对象数据加密的过程,提高了处理速度和开发效率,降低了开发成本。
根据本发明的上述实施例,对象加密存储系统还可以包括:解密装置,设置在数据库的读取接口内,用于获取与读取请求对应的读取对象,并在读取对象为加密对象的情况下,对加密对象进行解密得到解密对象,读取解密对象;在读取对象不为加密对象的情况下,直接读取该读取对象。
如图2所示,本系统通过将加密装置和解密装置分别封装入数据存储系统和数据读取系统,将加密/解密过程注入到数据存取系统框架中,从而可以根据配置信息,在存储对象前加密,读取对象后解密,完成了数据存取系统架构中自动的加密/解密。
具体地,图2中示出的加密装置和解密装置,不仅能够通过重写、重载或扩充的方式可以实现,而且任何能够注入到存储过程/读取过程的方式均可;并且任何具有数据存取系统特征实现的数据存储都可以使用本申请的加密装置和解密装置有不同的实现,即无需在数据存取系统框架中增加装置。另外,还可以直接将本系统的加密装置和解密装置内置到数据存取系统框架中。任何将本装置思想内置到数据存取系统框架中的方案均为本专利的变形,不超出本申请的保护范围。
更具体地,在本发明的上述实施例中,可以为数据存取系统实体类进行扩展,首先配置需要加密的加密属性以及对应的加密/解密密钥,下面以ORM为例详细介绍本发明:
其中,ORM系统框架名称为ADO.NET Entity Framework。具体地,可以将加密装置内置于数据存取系统框架的数据库的存储入口,可以预先设置好该加密装置的加密属性,例如:用户的身份证号、用户的年龄等。具体地,找到数据存取系统架构的存储数据对象的存储入口。以Microsoft.Net Framework中的ADO.NET Entity Framework为例,ObjectContext对象的SaveChanges方法及重载方法为数据库的存储入口。然后对存储数据对象的方法进行重写(或扩充、重载),将该加密装置加入数据库的存储入口之后,一旦用户发起存储请求,存储的处理过程将被暂停,直接进入加密的处理过程。
具体地,可以通过检测该存储请求携带的数据对象中是否存在需要加密的数据,也即检测该数据对象中是否存在与预设的加密属性对应的属性数据,如果存在,则使用预设的加密密钥加密该属性数据,得到加密数据。在该实施例中,也即数据库的存储方法默认存储行为发生前加密装置获得数据对象。
例如,在Microsoft.Net Framework中的ADO.NET Entity Framework中,通过ObjectStateManage可以获得当前被操作的数据对象的集合,并且遮蔽SaveChanges方法(即存储过程)并调用父类的实现来完成加密存储。
在上述实施例中,在接收到存储请求之后,可以直接从存储请求中携带的数据对象中提取加密属性对应的属性数据。具体地,在Microsoft.Net Framework中,可以使用反射的方式从数据对象中获得加密属性的属性数据,通过加密属性的信息获取或修改属性数据的值。例如,可以通过反射的方法从用户输入的数据对象中提取加密属性(如身份证号)的属性数据,该属性数据的值可以是18位自然数组成的一个字符串,可以修改该字符串的值。
在获取该属性数据之后,可以根据预设的加密密钥对该属性数据进行加密,在上述例子中,可以使用预设的加密密钥对获取的18位的字符串进行加密得到加密数据,然后使用该加密数据对身份证号(即加密属性)重新赋值,从而可以获取加密对象。
在获取加密对象之后执行数据存取系统架构的存储方法对加密对象进行存储。
本系统上述实施例中的解密装置也内置于数据库中,具体地,找到数据存取系统框架中读取对象数据为数据对象赋值的读取入口,将解密装置内置于其中,在获取到用户读取该读取对象的请求之后,直接对读取对象使用与预设的加密密钥对应得解密密钥解密对象得到解密对象,以供用户读取。
更具体地,仍然以Microsoft.Net Framework中的ADO.NET Entity Framework为例,ObjectContext对象的LoadProperty方法负责将数据对象赋值,重写、扩充或重载数据的读取赋值方法,在每次属性赋值操作后,如果检测到读取的实体的属性配置为加密属性,则使用与预设加密密钥对应的解密密钥解密该属性数据,得到解密对象。
具体地,在本发明的上述实施例中,获取用户的存储请求或读取,可以是通过接收用户的存储数据对象的请求或接收用户的读取请求实现。
图3是根据本发明实施例的对象加密存储方法的流程图,如图3所示该方法包括如下步骤:
步骤S102,获取存储请求,其中,存储请求携带数据对象。
步骤S104,获取与存储请求对应的加密属性。
步骤S106,对数据对象中对应加密属性的属性数据进行加密得到加密对象。
步骤S108,将加密对象保存入数据库。
采用本发明,将加密装置设置在数据库的存储接口内,在获取模块获取到用户的存储请求之后,通过属性获取模块和加密模块直接对数据对象中需要加密的数据加密后才通过保存模块保存加密后的加密对象,从而可以实现数据存取系统架构中对象属性级别的自动加密,开发者无需手动开发加密/解密的过程,仅需要配置需要加密的属性即可,从而解决了现有技术中数据存取系统架构中加密对象数据的过程复杂、开发效率低下的问题,实现了数据存取系统架构中自动加密,极大的降低了手动加密解密开发成本,并且简化了对象数据加密的过程,提高了处理速度和开发效率,降低了开发成本。
具体地,在上述实施例中对含有加密属性的数据对象进行属性级别加密时,可以控制数据对象中的一个或多个属性数据进行加密,从而获得加密后的加密对象。可能是部分加密,也可能是所有属性的值全部被加密。
具体地,在本发明的上述实施例中不仅能够通过重写、重载或扩充的方式在数据存取系统架构中实现加密存储,而且任何能够注入到存储过程/读取过程的方式均可以实现加密存储;并且任何具有数据存取系统特征实现的数据存储都可以使用本申请的加密装置和解密装置有不同的实现,即无需在数据存取系统框架中增加加密装置或解密装置。另外,还可以直接将本系统的加密装置和解密装置内置到数据存取系统框架中。
根据本发明的上述实施例,对数据对象中对应加密属性的属性数据进行加密得到加密数据的步骤可以包括:从数据对象中提取与加密属性对应的属性数据;使用预设加密密钥对属性数据进行加密得到加密数据;使用加密数据更新数据对象得到加密数据。
具体地,获取与存储请求对应的加密属性的步骤可以包括:暂停存储数据对象;使用加密函数调取加密属性。更具体地,获取加密属性可以通过如下步骤实现:从数据对象中提取实体信息,其中,实体信息中包括实体属性;在预设属性数据库中存在与实体属性一致的加密属性的情况下,提取加密属性。
其中,加密属性可以是在将加密装置内置于数据库中是预设好的属性,也可以是根据不同的数据对象的数据内容而设置的加密属性。该加密属性可以是保存在加密装置中的需要加密的属性。
具体地,在从数据对象中提取实体信息之前,可以先从预设属性数据库中提取预设属性,在加密属性与预设属性一致的情况下,才需要对该加密属性对应的属性数据加密,如果不一致,则不需要对该加密属性对应的加密属性加密。将数据对象中的所有加密属性均需要经过上述是否需要加密的判定。
在本发明的上述实施例中,在将加密对象保存入数据库之后,对象加密存储方法还可以包括:获取与读取请求对应的读取对象;检测读取对象是否为加密对象;在读取对象为加密对象的情况下,对加密对象进行解密得到解密对象,读取解密对象;在读取对象不为加密对象的情况下,直接读取该读取对象。
更具体地,在本发明的上述实施例中,可以为数据存取系统实体类进行扩展,首先配置需要加密的加密属性以及对应的加密/解密密钥,下面以数据存取系统为例详细介绍本发明:
可以将加密装置内置于数据存取系统框架的数据库的存储入口,可以在预设属性数据库中预先设置好该加密装置的加密属性,例如:用户的身份证号、用户的年龄等。具体地,找到数据存取系统架构的存储数据对象的存储入口。以Microsoft.Net Framework中的ADO.NETEntity Framework为例,ObjectContext对象的SaveChanges方法及重载方法为数据库的存储入口。然后对存储数据对象的方法进行重写(或扩充、重载),将该加密装置加入数据库的存储入口之后,一旦用户发起存储请求,存储的处理过程将被暂停,直接进入加密的处理过程。其中,预设属性数据库可以保存在数据库中。
具体地,可以通过检测该存储请求携带的数据对象中是否存在需要加密的数据,也即检测该数据对象中是否存在与预设的加密属性对应的属性数据,如果存在,则使用预设的加密密钥加密该属性数据,得到加密数据。在该实施例中,也即数据库的存储方法默认存储行为发生前加密装置获得数据对象。
例如,在Microsoft.Net Framework中的ADO.NET Entity Framework中,通过ObjectStateManage可以获得当前被操作的数据对象的集合,并且遮蔽SaveChanges方法(即上述实施例中的暂停存储过程)并在对数据对象完成加密之后调用数据库中初始的SaveChanges方法来完成对加密对象的加密存储。
在上述实施例中,在接收到存储请求之后,可以直接从存储请求中携带的数据对象中提取加密属性对应的属性数据。具体地,在Microsoft.Net Framework中,可以使用反射的方式从数据对象中获得加密属性的属性数据,通过加密属性的信息获取或修改属性数据的值。例如,可以通过反射的方法从用户输入的数据对象中提取加密属性(如身份证号)的属性数据,该属性数据的值可以是18位自然数组成的一个字符串,可以修改该字符串的值。
具体地,加密装置可以在接收到存储请求之后,暂停数据库中初始的存储过程,从数据对象中提取实体信息,该实体信息中记载着数据对象的各种实体属性、各种实体属性对应的属性数据以及对应数据库中的各个字段,例如:实体信息中包括对象(如,自然人)的姓名、身份证号:1XXX,身高:165cm,以及对应对象“自然人”在数据库中的字段:姓名、身高、身份证号。然后在预设属性数据库中存在与实体属性一致的加密属性的情况下,读取加密属性,具体地,可以使用实体属性在预设属性数据库中进行匹配得到加密属性。例如:在预设属性数据库中查找与实体属性(姓名、年龄、身高以及身份证号)一致的数据,查找到与实体属性一致的身份证号和年龄两个加密属性。然后从数据对象(在该实施例中优选从实体信息,可以提高处理速度)中提取加密对象对应的属性数据(如,年龄对应的数据值:15,身份证号对应的值:123456)。
在获取该属性数据之后,可以根据预设的加密密钥对该属性数据进行加密。具体地,将提取到的属性数据使用预设加密密钥加密,得到加密数据,使用该加密数据更新加密以得到加密对象。更具体地,使用该加密数据更新实体信息中加密属性对应的值就可以得到加密对象,也即使用加密数据替换加密属性原始位置的值。
例如,可以使用预设的加密密钥对获取的18位的字符串进行加密得到加密数据,然后使用该加密数据对身份证号(即加密属性)重新赋值,从而可以获取加密对象。
在获取加密对象之后执行数据存取系统架构的存储方法对加密对象进行存储。
本系统上述实施例中的解密装置也内置于数据库中,具体地,找到数据存取系统框架中读取对象数据为数据对象赋值的读取入口,将解密装置内置于其中,在获取到用户读取该读取对象的请求之后,直接对读取对象使用与预设的加密密钥对应得解密密钥解密对象得到解密对象,以供用户读取。
更具体地,仍然以Microsoft.Net Framework中的ADO.NET Entity Framework为例,ObjectContext对象的LoadProperty方法负责将数据对象赋值,重写、扩充或重载数据的读取赋值方法,在每次属性赋值操作后,如果检测到读取的实体的属性配置为加密属性,则使用与预设的加密密钥对应的解密密钥解密该属性数据,得到解密实体。在该实施例中可以仅仅检测实体属性中是否存在加密属性,即,可以仅仅检测数据对象中是否存在需要加密的属性,而不检测实体属性的值是否合法,以提高加密的速度。
具体地,在本发明的上述实施例中,获取用户的存储请求或读取,可以是通过接收用户的存储数据对象的请求或接收用户的读取请求实现。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图4是根据本发明实施例的对象加密存储装置的示意图,如图4所示该方法包括:请求获取模块10,用于获取存储请求,其中,存储请求携带数据对象;属性获取模块30,用于获取与存储请求对应的加密属性;加密模块50,用于对数据对象中对应加密属性的属性数据进行加密得到加密对象;保存模块70,用于将加密对象保存入数据库。
采用本发明,将加密装置设置在数据库的存储接口内,在获取模块获取到用户的存储请求之后,通过属性获取模块和加密模块直接对数据对象中需要加密的数据加密后才通过保存模块保存加密后的加密对象,从而可以实现数据存取系统架构中对象属性级别的自动加密,开发者无需手动开发加密/解密的过程,仅需要配置需要加密的属性即可,从而解决了现有技术中数据存取系统架构中加密对象数据的过程复杂、开发效率低下的问题,实现了数据存取系统架构中自动加密,极大的降低了手动加密解密开发成本,并且简化了对象数据加密的过程,提高了处理速度和开发效率,降低了开发成本。
具体地,在本发明的上述实施例中不仅能够通过重写、重载或扩充的方式在数据存取系统架构中实现加密存储,而且任何能够注入到存储过程/读取过程的方式均可以实现加密存储;并且任何具有数据存取系统特征实现的数据存储都可以使用本申请的加密装置和解密装置有不同的实现,即无需在数据存取系统框架中增加加密装置或解密装置。另外,还可以直接将本系统的加密装置和解密装置内置到数据存取系统框架中。
根据本发明的上述实施例,加密模块50可以包括:提取模块,用于从数据对象中提取与加密属性对应的属性数据;加密子模块,用于使用预设加密密钥对属性数据进行加密得到加密数据;更新模块,用于使用加密数据更新数据对象得到加密数据。
其中,加密属性可以是在将加密装置内置于数据库中是预设好的属性,也可以是根据不同的数据对象的数据内容而设置的加密属性。该加密属性可以是保存在加密装置中的需要加密的属性。
在本发明的上述实施例中,对象加密存储装置还可以包括:对象获取模块,用于获取与读取请求对应的读取对象;检测模块,用于检测读取对象是否为加密对象;解密读取模块,用于在读取对象为加密对象的情况下,对加密对象进行解密得到解密对象,读取解密对象;对象读取模块,用于在读取对象不为加密对象的情况下,直接读取该读取对象。
根据本发明的上述实施例,属性获取模块可以包括:暂停模块,用于暂停存储数据对象;调取模块,用于使用加密函数调取加密属性。
具体地,属性提取模块,从数据对象中提取实体信息,其中,实体信息中包括实体属性;属性读取模块,用于在预设属性数据库中存在与实体属性一致的加密属性的情况下,读取加密属性。
更具体地,在本发明的上述实施例中,可以为数据存取系统实体类进行扩展,首先配置需要加密的加密属性以及对应的加密/解密密钥,下面以数据存取系统为例详细介绍本发明:
可以将加密装置内置于数据存取系统框架的数据库的存储入口,可以在预设属性数据库中预先设置好该加密装置的加密属性,例如:用户的身份证号、用户的年龄等。具体地,找到数据存取系统架构的存储数据对象的存储入口。以Microsoft.Net Framework中的ADO.NETEntity Framework为例,ObjectContext对象的SaveChanges方法及重载方法为数据库的存储入口。然后对存储数据对象的方法进行重写(或扩充、重载),将该加密装置加入数据库的存储入口之后,一旦用户发起存储请求,存储的处理过程将被暂停,直接进入加密的处理过程。其中,预设属性数据库可以保存在数据库中。
具体地,可以通过检测该存储请求携带的数据对象中是否存在需要加密的数据,也即检测该数据对象中是否存在与预设的加密属性对应的属性数据,如果存在,则使用预设的加密密钥加密该属性数据,得到加密数据。在该实施例中,也即数据库的存储方法默认存储行为发生前加密装置获得数据对象。
例如,在Microsoft.Net Framework中的ADO.NET Entity Framework中,通过ObjectStateManage可以获得当前被操作的数据对象的集合,并且遮蔽SaveChanges方法(即上述实施例中的暂停存储过程)并在对数据对象完成加密之后调用数据库中初始的SaveChanges方法来完成对加密对象的加密存储。
在上述实施例中,在接收到存储请求之后,可以直接从存储请求中携带的数据对象中提取加密属性对应的属性数据。具体地,在Microsoft.Net Framework中,可以使用反射的方式从数据对象中获得加密属性的属性数据,通过加密属性的信息获取或修改属性数据的值。例如,可以通过反射的方法从用户输入的数据对象中提取加密属性(如身份证号)的属性数据,该属性数据的值可以是18位自然数组成的一个字符串,可以修改该字符串的值。
具体地,加密装置可以在接收到存储请求之后,暂停数据库中初始的存储过程,从数据对象中提取实体信息,该实体信息中记载着数据对象的各种实体属性、各种实体属性对应的属性数据以及对应数据库中的各个字段,例如:实体信息中包括对象(如,自然人)的姓名、身份证号:1XXX,身高:165cm,以及对应对象“自然人”在数据库中的字段:姓名、身高、身份证号。然后在预设属性数据库中存在与实体属性一致的加密属性的情况下,读取加密属性,具体地,可以使用实体属性在预设属性数据库中进行匹配得到加密属性。例如:在预设属性数据库中查找与实体属性(姓名、年龄、身高以及身份证号)一致的数据,查找到与实体属性一致的身份证号和年龄两个加密属性。然后从数据对象(在该实施例中优选从实体信息,可以提高处理速度)中提取加密对象对应的属性数据(如,年龄对应的数据值:15,身份证号对应的值:123456)。
在获取该属性数据之后,可以根据预设的加密密钥对该属性数据进行加密。具体地,将提取到的属性数据使用预设加密密钥加密,得到加密数据,使用该加密数据更新加密以得到加密对象。更具体地,使用该加密数据更新实体信息中加密属性对应的值就可以得到加密对象,也即使用加密数据替换加密属性原始位置的值。
例如,可以使用预设的加密密钥对获取的18位的字符串进行加密得到加密数据,然后使用该加密数据对身份证号(即加密属性)重新赋值,从而可以获取加密对象。
在获取加密对象之后执行数据存取系统架构的存储方法对加密对象进行存储。
本系统上述实施例中的解密装置也内置于数据库中,具体地,找到数据存取系统框架中读取对象数据为数据对象赋值的读取入口,将解密装置内置于其中,在获取到用户读取该读取对象的请求之后,直接对读取对象,使用与预设的加密密钥对应得解密密钥解密对象得到解密对象,以供用户读取。
更具体地,仍然以Microsoft.Net Framework中的ADO.NET Entity Framework为例,ObjectContext对象的LoadProperty方法负责将数据对象赋值,重写、扩充或重载数据的读取赋值方法,在每次属性赋值操作后,如果检测到读取的实体的属性配置为加密属性,则使用与预设的加密密钥对应的解密密钥解密该属性数据,得到解密实体。在该实施例中可以仅仅检测实体属性中是否存在加密属性,即,可以仅仅检测数据对象中是否存在需要加密的属性,而不检测实体属性的值是否合法,以提高加密的速度。
具体地,在本发明的上述实施例中,获取用户的存储请求或读取,可以是通过接收用户的存储数据对象的请求或接收用户的读取请求实现。
从以上的描述中,可以看出,本发明实现了如下技术效果:采用本发明,将加密装置设置入数据库的存储接口内,在获取模块获取到用户的存储请求之后,通过属性获取模块和加密模块直接对数据对象中需要加密的数据加密后才通过保存模块保存加密后的加密对象,从而可以实现数据存取系统架构中对象属性级别的自动加密,开发者无需手动开发加密/解密的过程,仅需要配置需要加密的属性即可,从而解决了现有技术中数据存取系统架构中加密对象数据的过程复杂、效率低下的问题,实现了数据存取系统架构中自动加密,极大的降低了手动加密解密开发成本,并且简化了对象数据加密的过程,提高了处理速度和效率。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。