一种FBX格式三维模型的加密及解密方法技术

技术编号:21898899 阅读:56 留言:0更新日期:2019-08-17 18:23
本发明专利技术公开了一种FBX格式三维模型的加密及解密方法,具体涉及三维模型领域,包括加密模块和解密模块,1)所述加密模块的加密方法如下:步骤S101、读取原始的FBX格式三维模型文件;步骤S102、版权所有人输入一段文字密钥,通过MD5加密,生成4段32位散列值。本发明专利技术提供了一种简单易用的、高效率的FBX格式三维模型的加密和解密方法,采用此加密解密方法,通过预设的密钥计算出模型文件的随机数据的加入位置,通过改变密钥可以调整模型文件的随机数据的加入位置,从而在保持解密方法效率高的优点的同时,提高了算法的安全性,不易被破解,且三维模型解密算法复杂度较低。

A Method of Encryption and Decryption for Three-dimensional Model in FBX Format

【技术实现步骤摘要】
一种FBX格式三维模型的加密及解密方法
本专利技术涉及三维模型
,更具体地说,本专利技术涉及一种FBX格式三维模型的加密及解密方法。
技术介绍
FBX格式三维模型文件是一种目前广泛使用的三维模型文件。FBX格式三维模型文件本身处于一种无保护状态,当这些文件放置于网络上或随系统安装到客户电脑上时,任何使用者皆可读取和修改这些三维模型文件,或将这些三维模型用于其他应用,如此一来缺乏对设计者的工作成果或拥有者的资产给予适当保护。现有的三维模型保护方法通常是通过变换三维模型中物件面元的点坐标,使未授权的用户无法正确的获取原始三维物件。该方法在模型加载后通常需要通过复杂的矩阵变换计算来进行模型还原,对于大型三维模型其解密方法耗时较长,对系统性能有较大影响。
技术实现思路
为了克服现有技术的上述缺陷,本专利技术的实施例提供一种FBX格式三维模型的加密及解密方法,本专利技术通过针对上述三维模型保密方法的缺陷,针对FBX格式三维模型文件的特点,通过密钥,在模型文件的多个特殊位置加入一段随机数据,通过改变密钥可以调整模型文件的随机数据和加入的位置,该方法在确保加密安全性较高且三维模型解密算法复杂度较低。为实现上述目的,本专利技术提供如下技术方案:一种FBX格式三维模型的加密及解密方法,包括加密模块和解密模块;1)所述加密模块的加密方法如下:步骤S101、读取原始的FBX格式三维模型文件;步骤S102、版权所有人输入一段文字密钥,通过MD5加密,生成4段32位散列值;步骤S103、通过二进制搜索找到关键字Vertices第1次出现的文件位置VP1,若Vertices存在,取第1段32位散列值的前8位对应的十进制数VN1作为偏移值,找到VP1向后数N1位的位置VP1N,在VP1N后加入第1段32位散列值的后24位数据序列,若Vertices不存在,则直接加密结束;步骤S104、通过二进制搜索找到关键字PolygonVertexIndex第1次出现的文件位置PP1,若PolygonVertexIndex存在,取第2段32位散列值的前8位对应的十进制数PN1作为偏移值,找到PP1向后数PN1位的位置PP1N,在PP1N后加入第2段32位散列值的后24位数据序列,若PolygonVertexIndex不存在,则直接加密结束;步骤S105、通过二进制搜索找到关键字Edges第1次出现的文件位置EP1,若Edges存在,取第3段32位散列值的前8位对应的十进制数EN1作为偏移值,找到EP1向后数EN1位的位置EP1N,在EP1N后加入第3段32位散列值的后24位数据序列,若Edges不存在,则直接加密结束;步骤S106、通过二进制搜索找到关键字GeometryVersion第1次出现的文件位置GP1,若GeometryVersion存在,取第4段32位散列值的前8位对应的十进制数GN1作为偏移值,找到GP1向后数GN1位的位置GP1N,在GP1N后加入第4段32位散列值的后24位数据序列,若GeometryVersion不存在,则直接加密结束;步骤S107、通过二进制搜索找到关键字Vertices第2次出现的文件位置VP2,若Vertices存在,将第1段32位散列值循环左移8位成为新的32位散列值,取新32位散列值的前8位对应的十进制数VN2作为偏移值,找到VP2向后数VN2位的位置VP2N,在VP2N后加入新32位散列值的后24位数据序列,若Vertices不存在,则直接加密结束;步骤S108、通过二进制搜索找到关键字PolygonVertexIndex第2次出现的文件位置PP2,若PolygonVertexIndex存在,将第2段32位散列值循环左移8位成为新的32位散列值,取新32位散列值的前8位对应的十进制数PN2作为偏移值,找到PP2向后数PN2位的位置PP2N,在PP2N后加入新32位散列值的后24位数据序列,若PolygonVertexIndex不存在,则直接加密结束;步骤S109、通过二进制搜索找到关键字Edges第2次出现的文件位置EP2,若Edges存在,将第3段32位散列值循环左移8位成为新的32位散列值,取新32位散列值的前8位对应的十进制数EN2作为偏移值,找到EP2向后数EN2位的位置EP2N,在EP2N后加入新32位散列值的后24位数据序列,若Edges不存在,则直接加密结束;步骤S110、通过二进制搜索找到关键字GeometryVersion第2次出现的文件位置GP2,若GeometryVersion存在,将第4段32位散列值循环左移8位成为新的32位散列值,取新32位散列值的前8位对应的十进制数GN2作为偏移值,找到GP2向后数GN2位的位置GP2N,在GP2N后加入新32位散列值的后24位数据序列,若GeometryVersion不存在,则直接加密结束;步骤S111、依此类推,直到搜索完所有的关键字Vertices、PolygonVertexIndex、Edges和GeometryVersion,完成三维模型文件的加密过程,从而生成新的三维模型文件,加密结束;2)所述解密模块的解密方法如下:步骤S101、通过网络或其他物理方式传播所述的新三维模型文件;步骤S102、需要使用该三维模型文件时,可根据4段32位散列值将新模型文件还原成标准的FBX格式三维模型文件;步骤S103、通过二进制搜索找到关键字Vertices第1次出现的文件位置VP1,若Vertices存在,取第1段32位散列值的前8位对应的十进制数VN1作为偏移值,找到VP1向后数N1位的位置VP1N,在VP1后删除掉24位数据序列,若Vertices不存在,则直接解密结束;步骤S104、通过二进制搜索找到关键字PolygonVertexIndex第1次出现的文件位置PP1,若PolygonVertexIndex存在,取第2段32位散列值的前8位对应的十进制数PN1作为偏移值,找到PP1向后数PN1N位的位置PP1N,在PP1后删除掉24位数据序列,若PolygonVertexIndex不存在,则直接解密结束;步骤S105、通过二进制搜索找到关键字Edges第1次出现的文件位置EP1,若Edges存在,取第3段32位散列值的前8位对应的十进制数EN1作为偏移值,找到EP1向后数EN1位的位置EP1N,在EP1N后删除掉24位数据序列,若Edges不存在,则直接解密结束;步骤S106、通过二进制搜索找到关键字GeometryVersion第1次出现的文件位置GP1,若GeometryVersion存在,取第4段32位散列值的前8位对应的十进制数GN1作为偏移值,找到GP1向后数GN1位的位置GP1N,在GP1N后删除掉24位数据序列,若GeometryVersion不存在,则直接解密结束;步骤S107、通过二进制搜索找到关键字Vertices第2次出现的文件位置VP2,若Vertices存在,将第1段32位散列值循环左移8位成为新的32位散列值,取新32位散列值的前8位对应的十进制数VN2作为偏移值,找到VP2向后数N2位的位置VP2N,在VP2N后删除掉24位数据序列,若Vertices不存在,则直接加密结束;步骤S108、通过二进制搜索找到本文档来自技高网...

【技术保护点】
1.一种FBX格式三维模型的加密及解密方法,其特征在于:包括加密模块和解密模块;1)所述加密模块的加密方法如下:步骤S101、读取原始的FBX格式三维模型文件;步骤S102、版权所有人输入一段文字密钥,通过MD5加密,生成4段32位散列值;步骤S103、通过二进制搜索找到关键字Vertices第1次出现的文件位置VP1,若Vertices存在,取第1段32位散列值的前8位对应的十进制数VN1作为偏移值,找到VP1向后数N1位的位置VP1N,在VP1N后加入第1段32位散列值的后24位数据序列,若Vertices不存在,则直接加密结束;步骤S104、通过二进制搜索找到关键字PolygonVertexIndex第1次出现的文件位置PP1,若PolygonVertexIndex存在,取第2段32位散列值的前8位对应的十进制数PN1作为偏移值,找到PP1向后数PN1位的位置PP1N,在PP1N后加入第2段32位散列值的后24位数据序列,若PolygonVertexIndex不存在,则直接加密结束;步骤S105、通过二进制搜索找到关键字Edges第1次出现的文件位置EP1,若Edges存在,取第3段32位散列值的前8位对应的十进制数EN1作为偏移值,找到EP1向后数EN1位的位置EP1N,在EP1N后加入第3段32位散列值的后24位数据序列,若Edges不存在,则直接加密结束;步骤S106、通过二进制搜索找到关键字GeometryVersion第1次出现的文件位置GP1,若GeometryVersion存在,取第4段32位散列值的前8位对应的十进制数GN1作为偏移值,找到GP1向后数GN1位的位置GP1N,在GP1N后加入第4段32位散列值的后24位数据序列,若GeometryVersion不存在,则直接加密结束;步骤S107、通过二进制搜索找到关键字Vertices第2次出现的文件位置VP2,若Vertices存在,将第1段32位散列值循环左移8位成为新的32位散列值,取新32位散列值的前8位对应的十进制数VN2作为偏移值,找到VP2向后数VN2位的位置VP2N,在VP2N后加入新32位散列值的后24位数据序列,若Vertices不存在,则直接加密结束;步骤S108、通过二进制搜索找到关键字PolygonVertexIndex第2次出现的文件位置PP2,若PolygonVertexIndex存在,将第2段32位散列值循环左移8位成为新的32位散列值,取新32位散列值的前8位对应的十进制数PN2作为偏移值,找到PP2向后数PN2位的位置PP2N,在PP2N后加入新32位散列值的后24位数据序列,若PolygonVertexIndex不存在,则直接加密结束;步骤S109、通过二进制搜索找到关键字Edges第2次出现的文件位置EP2,若Edges存在,将第3段32位散列值循环左移8位成为新的32位散列值,取新32位散列值的前8位对应的十进制数EN2作为偏移值,找到EP2向后数EN2位的位置EP2N,在EP2N后加入新32位散列值的后24位数据序列,若Edges不存在,则直接加密结束;步骤S110、通过二进制搜索找到关键字GeometryVersion第2次出现的文件位置GP2,若GeometryVersion存在,将第4段32位散列值循环左移8位成为新的32位散列值,取新32位散列值的前8位对应的十进制数GN2作为偏移值,找到GP2向后数GN2位的位置GP2N,在GP2N后加入新32位散列值的后24位数据序列,若GeometryVersion不存在,则直接加密结束;步骤S111、依此类推,直到搜索完所有的关键字Vertices、PolygonVertexIndex、Edges和GeometryVersion,完成三维模型文件的加密过程,从而生成新的三维模型文件,加密结束;2)所述解密模块的解密方法如下:步骤S101、通过网络或其他物理方式传播所述的新三维模型文件;步骤S102、需要使用该三维模型文件时,可根据4段32位散列值将新模型文件还原成标准的FBX格式三维模型文件;步骤S103、通过二进制搜索找到关键字Vertices第1次出现的文件位置VP1,若Vertices存在,取第1段32位散列值的前8位对应的十进制数VN1作为偏移值,找到VP1向后数N1位的位置VP1N,在VP1后删除掉24位数据序列,若Vertices不存在,则直接解密结束;步骤S104、通过二进制搜索找到关键字PolygonVertexIndex第1次出现的文件位置PP1,若PolygonVertexIndex存在,取第2段32位散列值的前8位对应的十进制数PN1作为偏移值,找到PP1向后数PN1N位的位置PP1N,在PP1后删除掉24位数据序列,若PolygonVer...

【技术特征摘要】
1.一种FBX格式三维模型的加密及解密方法,其特征在于:包括加密模块和解密模块;1)所述加密模块的加密方法如下:步骤S101、读取原始的FBX格式三维模型文件;步骤S102、版权所有人输入一段文字密钥,通过MD5加密,生成4段32位散列值;步骤S103、通过二进制搜索找到关键字Vertices第1次出现的文件位置VP1,若Vertices存在,取第1段32位散列值的前8位对应的十进制数VN1作为偏移值,找到VP1向后数N1位的位置VP1N,在VP1N后加入第1段32位散列值的后24位数据序列,若Vertices不存在,则直接加密结束;步骤S104、通过二进制搜索找到关键字PolygonVertexIndex第1次出现的文件位置PP1,若PolygonVertexIndex存在,取第2段32位散列值的前8位对应的十进制数PN1作为偏移值,找到PP1向后数PN1位的位置PP1N,在PP1N后加入第2段32位散列值的后24位数据序列,若PolygonVertexIndex不存在,则直接加密结束;步骤S105、通过二进制搜索找到关键字Edges第1次出现的文件位置EP1,若Edges存在,取第3段32位散列值的前8位对应的十进制数EN1作为偏移值,找到EP1向后数EN1位的位置EP1N,在EP1N后加入第3段32位散列值的后24位数据序列,若Edges不存在,则直接加密结束;步骤S106、通过二进制搜索找到关键字GeometryVersion第1次出现的文件位置GP1,若GeometryVersion存在,取第4段32位散列值的前8位对应的十进制数GN1作为偏移值,找到GP1向后数GN1位的位置GP1N,在GP1N后加入第4段32位散列值的后24位数据序列,若GeometryVersion不存在,则直接加密结束;步骤S107、通过二进制搜索找到关键字Vertices第2次出现的文件位置VP2,若Vertices存在,将第1段32位散列值循环左移8位成为新的32位散列值,取新32位散列值的前8位对应的十进制数VN2作为偏移值,找到VP2向后数VN2位的位置VP2N,在VP2N后加入新32位散列值的后24位数据序列,若Vertices不存在,则直接加密结束;步骤S108、通过二进制搜索找到关键字PolygonVertexIndex第2次出现的文件位置PP2,若PolygonVertexIndex存在,将第2段32位散列值循环左移8位成为新的32位散列值,取新32位散列值的前8位对应的十进制数PN2作为偏移值,找到PP2向后数PN2位的位置PP2N,在PP2N后加入新32位散列值的后24位数据序列,若PolygonVertexIndex不存在,则直接加密结束;步骤S109、通过二进制搜索找到关键字Edges第2次出现的文件位置EP2,若Edges存在,将第3段32位散列值循环左移8位成为新的32位散列值,取新32位散列值的前8位对应的十进制数EN2作为偏移值,找到EP2向后数EN2位的位置EP2N,在EP2N后加入新32位散列值的后24位数据序列,若Edges不存在,则直接加密结束;步骤S110、通过二进制搜索找到关键字GeometryVersion第2次出现的文件位置GP2,若GeometryVersion存在,将第4段32位散列值循环左移8位成为新的32位散列值,取新32位散列值的前8位对应的十进制数GN2作为偏移值,找到GP2向后数GN2位的位置GP2N,在GP2N后加入新32位散列值的后24位数据序列,若GeometryVersion不存在,则直接加密结束;步骤S111、依此类推,直到搜索完所有的关键字Vertices、PolygonVertexIndex、Edges和GeometryVersion,完成三维模型文件的加密过程,从而生成新的三维模型文件,加密结束;2)所述解密模块的解密方法如下:步骤S101、通过网络或其他物理方式传播所述的新三维模型文件;步骤S102、需要使用该三维模型文件时,可根据4段32位散列值将新模型文件还原成标准的FBX格式三维...

【专利技术属性】
技术研发人员:倪炜黄博航胡丽隽
申请(专利权)人:长沙能川信息科技有限公司
类型:发明
国别省市:湖南,43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1