CN114580001B - 一种用于excel文件的加密解密算法及文件保护方法 - Google Patents
一种用于excel文件的加密解密算法及文件保护方法 Download PDFInfo
- Publication number
- CN114580001B CN114580001B CN202210236547.6A CN202210236547A CN114580001B CN 114580001 B CN114580001 B CN 114580001B CN 202210236547 A CN202210236547 A CN 202210236547A CN 114580001 B CN114580001 B CN 114580001B
- Authority
- CN
- China
- Prior art keywords
- binary
- information
- bin
- key
- length
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/177—Editing, e.g. inserting or deleting of tables; using ruled lines
- G06F40/18—Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Linguistics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明公开了一种用于excel文件的加密解密算法及文件保护方法,对于文本进行utf‑8编码解码,使用原创加密解密算法,根据具体应用场景,原创应用想法,设计功能完善的界面,方便操作,整个过程速度快,具有实用性。原创应用想法,对于excel文件操作有系统的流程,每个用户即编号会分配一个私有密钥,密钥设置无规律难以破解,管理员和用户可通过至少八位的密码来生成密钥。加密有两种形式,第一种是对整个excel文件行加密,第二种是将个人信息加密后上传到excel表格中,其中对utf‑8编码代码进行了改进。解密有两种形式,分别为整个excel文件信息解密和私人信息解密。
Description
技术领域
本发明涉及文件加密解密技术领域,尤其涉及一种用于excel文件的加密解密算法及文件保护方法。
背景技术
群里管理员会让用户在线填写excel文件,针对隐私信息,如身份证号码,家人信息,家庭住址等并不想让他人知晓,若不在群里在线填写,私发给管理员,保证了隐私但效率低下。
群里管理员会上传一些包含私人信息的excel文件,若单独发送给用户,保证了隐私但效率低下,因此需要隐私保护技术保证用户只能查看自己的信息,无法获取他人信息。
我们所处的信息时代对隐私保护很看重,因此市场需求量大。
发明内容
本发明目的就是为了解决已有技术群里excle文件在线填写信息和上传excel文件的隐私保护的问题,提供一种用于excel文件的加密解密算法及文件保护方法。本发明面向的对象分为管理员和用户,对于管理员,通过所有用户的私有密钥对excel文件进行加密,将加密后的excel文件上传到群里,用户可以通过私有密钥解密出私人信息,但无法获取其他用户的信息。管理员对于用户上传到excel文件中二进制信息通过所有用户的私有密钥进行解密,可以得到所有用户的上传信息;对于用户,若需要上传一些重要的私人信息到excel文件中,可以通过专用模式将个人信息进行加密,再将相应的二进制数据复制粘贴到excel文件中,管理员可以通过所有用户的密钥解密出所有信息。其中加密解密算法原创,针对utf-8编码代码做出了改进。
本发明是通过以下技术方案实现的:
一种用于excel文件的加密解密算法,具体包括有:
(1)加密算法:
(1-1)分割成无规律小段:对所有明文数据用utf-8编码代码得到二进制数据,通过密钥1和密钥2将二进制数据无规则分割成很多段,段数和每段的长度不固定,密钥1中元素为基本切割长度,第1轮切割长度是密钥list1的第一位到末位数字与密钥2的数字依次相加,第n轮切割长度是密钥1的第一位到末位数字与密钥2的数字的n倍依次相加;
(1-2)段内异或:将密钥1和密钥2的所有数字拼接成字符串并通过utf-8编码代码转换成二进制字符串bin_password,步骤(1-1)中将所有的二进制分割成很多段无规则长度的小段,总段数为length,对于每一段的二进制数据bin与二进制字符串bin_password异或,若二进制字符串bin_password的长度大于或等于二进制数据bin的长度,则将二进制数据bin与二进制字符串bin_password的前len个二进制依次异或,拼接组合成二进制数据bin_end;若二进制字符串bin_password的长度小于二进制数据bin的长度,则将二进制数据bins前len位二进制与二进制字符串bin_password依次异或,对于二进制数据bin未异或的二进制按照这种方式依次与二进制字符串bin_password依次异或,结果拼接组合成二进制数据bin_end,将每段异或后的结果二进制数据bin_end存储到列表bin_end_list;
(1-3)对各段编号:分割成的总段数是length,对各段依次编号,从0开始,依次递增到length-1;
(1-4)判断编号编码位数:判断出编号数字通过几位二进制进行编码,若length在1到16以内,则编码位数n为4,若length是17到32以内,则序号数用5位二进制表示,若length是33到64以内,则序号数用6位二进制表示,若length满足2**(n-1)+1<=length<=2**n,则编码位数为n,获取编码位数后将所有编号数字转换成二进制数据;
(1-5)对编号二进制数据异或:将0到length-1这length个依次递增的整数依次转换为n位二进制数据,并拼接成二进制字符串bin_nums,若二进制字符串bin_password的长度大于或等于二进制字符串bin_nums的长度,则将二进制字符串bin_nums与二进制字符串bin_password的前len个二进制依次异或,结果为字符串bin_nums_end;若二进制字符串bin_password的长度小于二进制字符串bin_nums的长度,则将二进制字符串bin_nums前len位二进制与二进制字符串bin_password依次异或,对于二进制字符串bin_nums未异或的二进制的按照这种方式依次与二进制字符串bin_password依次异或,结果拼接组合成字符串bin_nums_end;
(1-6)获取打乱顺序后编号:将列表bin_nums_end按n位二进制依次截断并转换为整数存储在列表list_nums中,将列表list_nums深度拷贝成列表list_nums_sort,将列表list_nums_sort按照从小到大顺序进行排序,在列表list_nums中寻找列表list_nums_sort的各元素,将各元素在列表list_nums中的位置信息存储到列表list_end中,若列表list_nums_sort中有重复的元素,则在列表list_nums中找完所有的重复元素;列表list_end中存储的就是将0到lenght-1这length个整数打乱后的编号;
(1-7)按乱序编号输出各段数据:最后按照此编号顺序输出列表bin_end_list的元素,拼接在一起即加密后的二进制数据;
(2)解密算法:
获取对所有二进制数据进行切割的信息list_cut,将密钥1和密钥2的所有数字拼接成字符串并通过utf-8编码转换成二进制字符串bin_password,通过总段数length和二进制字符串bin_password生成一个含有0到length-1这length个整数的无序数组list_disrupt,通过信息list_cut和数组list_disrupt得到加密时命名的编号指定的这段二进制数据在异或后并打乱顺序输出的二进制数据中的位置范围,接下来获取加密时命名的编号指定的这段二进制数据对应的异或后的二进制数据,再将其与二进制字符串bin_password进行异或,最后将异或后的二进制串依次输出获取所有字符,并用utf-8编码得到二进制数据;
(3)密钥加密
将密钥转换为对应的ASCII值,将其拼接生成一个整数,作为随机种子,为每个编号各生成8个33到126范围内的整数,将其转换成8个控制字符分发给用户作为私人密码;将每个编号对应的8个整数拼接生成整数,作为随机种子,随机生成24个33到126范围内的整数;前8个整数拼接生成一个整数,作为随机种子,随机生成两个10到100范围内的整数作为密钥1和密钥2的长度;中间8个整数拼接生成一个整数,作为随机种子,随机生成密钥1长度个1到1000范围内的整数,作为密钥1;最后8个整数拼接生成一个整数,作为随机种子,随机生成密钥2长度个1到1000范围内的整数,作为密钥2;密钥1和密钥2组合成私人密钥,所有用户即编号对应的私人密钥组合成管理员密钥。
一种基于加密解密算法的excel文件保护方法,具体包括如下内容:
1)excel文件里有标题以及标题对应的信息,其唯一属性是编号,编号的标题位置flage根据excel文件中信息手动输入,编号和所有标题不需加密,对其余信息进行加密;对每个编号随机设置一个密钥,密钥由编号、密钥1和密钥2组成,是字典形式,密钥1和2通过特殊符号进行划分;密钥1和密钥2的长度设定为10到100以内,大小设定为1到1000以内的整数;管理员有所有编号对应的密钥,设置完密钥后私发给所有编号对应的个人,个人只有自己的密钥,因此只能解密出个人信息,管理员有所有的密钥,因此可解密出所有编号对应的信息;
2)两种加密形式
第一种是对整个excel文件加密,第二种是将个人信息加密后上传到excel表格中;
2-1)对整个excel文件加密
首先提取excel表格中所有信息,根据其所在的行号将对应信息存储在字典1中,同时需要将每行单元格对应位置含有的字符个数存储在字典2中,通过编号标题所在位置得知哪些信息不需要加密,哪些信息需要加密;
将字典1中需要加密的信息逐位置转换为utf-8编码,同时将对应位置的二进制长度存储在字典3中,将字典1中需要加密的每行单元格的所有二进制信息通过专属密钥进行加密,将加密后的二进制和对应行号信息存储在字典4中;
通过字典3将字典4中每行加密后的二进制信息进行分割,每一行分割后的二进制信息存储在列表,通过该列表和编号标题所在位置将所有加密后的二进制信息写入excel表格中;
2-2)将个人信息加密后上传到excel表格中
将个人信息根据单元格位置通过特殊符号进行分割,并将此信息进行utf-8编码变成二进制信息,然后加密,再解密,最后通过utf-8解码,用于判定utf-8编码解码和加密解密过程中有无错误,将加密后得到的二进制信息通过标志信息划分依次复制粘贴进对应的excel文件单元格中;
3)两种解密形式
读取加密后的excel文件中的二进制信息,将所有信息存储在字典1中,解密分为整个excel文件信息解密和私人信息解密,通过提取的密钥来判断;
3-1)整个excel文件信息解密
若密钥的字典长度为所有编号总数,为整个excel文件信息解密,通过唯一属性标题位置得知从哪一行开始提取二进制信息,通过所有编号的密钥将每行单元格对应的所有二进制信息解密并存储在字典2中,通过字典1得知每行的每个单元格对应多少位二进制,通过utf-8编码规律和字典1得知各个单元格位置存储的符号数目,各单元格对应的符号数目的信息存储在字典3中;通过字典2得知每行单元格对应的所有解密后的二进制信息,将其通过utf-8解码转换为符号,通过字典3将符号进行划为依次和单元格相对应,然后写入excel文件中;最后将此加密后再解密的excel文件中的每一个单元格中信息与原excel文件进行对比,若全部一致则输出解密后确认无误,若有一处信息不一致则输出解密后发现错误;
3-2)个人信息解密
若密钥的字典长度是1,为个人信息解密,通过密钥知此人的编号,通过字典1获取此人的全部二进制信息,先将二进制解密,若是单字节的符号,则第一位是0,后七位是该符号的unicode码,对于n字节的符号,第一个字节前n位是1,根据此规律,得到各个单元格存储的二进制信息对应的符号数目,将其存储在列表1中;将所有二进制信息通过utf-8解码转换为符号,根据字典1对符号进行划分得到每个单元格对应的符号;通过唯一属性即编号的标题位置信息找到一系列小标题,将小标题与此人的信息对应输出即可将个人信息解密。
所述的utf-8编码代码,具体内容如下:对单个字节的符号对应的二进制进行扩充至8位,不足的在高位补0;若是单字节的符号,第一位是0,后七位是该符号的unicode码,对于n字节的符号,第一个字节前n位是1,因此采用以下方法获取单元格对应的符号数目:若是单字节,则符号数加1,对二进制进行8位截取往后移动8位再进行8位截取,若是n字节,则符号数加1,对二进制进行8位截取往后移动8*n位再进行8位截取,通过截取的这8位二进制首位是否为0以及前几位连续几个1来判断是几个字节的符号;
utf-8解码用bytes.fromhex(hex(int(str2, 2))[2:]).decode('utf-8')实现,通过获取每个单元格对应的符号数目将解码后得到的符号串进行分割依次写入excel文件相应的单元格中。
本发明的优点是:本发明解决了群里excel文件在线填写信息和上传excel文件存在隐私泄露和私发效率低下问题,通过excel文件保护系统保护了个人隐私,同时不会降低效率。
附图说明
图1是本发明的文本加密解密流程框架图。
图2是本发明的excel文件加密解密流程框架图。
图3是本发明的加密算法流程框架图。
图4是本发明的解密算法流程框架图。
图5是本发明的密钥加密流程框架图。
图6是本发明的界面图。
具体实施方式
本发明通过utf-8编码解码,使用原创加密解密算法,根据具体应用场景,原创应用想法,设计相应的界面,方便操作,具体内容如下:
excel文件里有标题以及标题对应的信息,其唯一属性是编号,编号的标题位置flage需要根据excel文件中信息手动输入,如flage="F2",则第F列是所有编号所在列,编号所在的行大于或等于3,编号和所有标题不需加密,对其余信息进行加密实现文件保护功能,对每个编号随机设置一个密钥,并保证密钥的设置是无规律的,其度和大小都不一致,密钥由编号,密钥1和密钥2组成,是字典形式,密钥1和2通过”#”进行间隔。
密钥1和密钥2的长度可设定为10到100以内,大小可设定为1到1000以内的整数,管理员可通过至少八位的密码使用原创方法生成所有用户即编号对应的密钥,同时生成所有用户的密码,可私发给个人,个人通过密码生成私人密钥,个人只有私人密钥,因此只能解密出个人信息,而他人信息无法获取,管理员有所有用户的密钥,因此可解密出所有用户即编号对应的信息。
加密有两种形式,第一种是对整个excel文件行加密,第二种是将个人信息加密后上传到excel表格中,其中对于utf-8编码代码做了进一步的改进。
解密有两种形式,读取加密后的excel文件中的二进制信息存储在字典中,解密分为整个excel文件信息解密和私人信息解密,通过提取的密钥来判断。
加密和解密算法原创,加密解密速度快,安全性高,加密操作依次为对所有明文数据utf-8编码,分割成无规律小段,段内异或,对各段编号,判断编号编码位数,对编号二进制数据异或,获取打乱顺序后编号,按乱序编号输出各段数据。
分为通用模式和专用模式,通用模式用来加密一般文本,专用模式用来加密需要上传到excel文件中的文本,用\对各单元格中需要填入的信息进行间隔。
加密解密算法原创,原创应用想法。设计界面方便操作,功能完善,整个过程速度快,具有实用性。加密解密算法原创,加密操作复杂,密钥设置无规律,难以破解,改变密钥中某个数字或增加减少某个数字,会使加密后的二进制发生很大的变动,加密效果好。对于密钥做了进一步加密,管理员和用户可通过至少八位的密码生成密钥,可使用ASCII码表的ASCII值为33到126对应的控制字符,难以破解。
一. 如图3-6所示,原创加密解密算法流程图和界面图;
1.加密算法:
对所有明文数据用改进后的utf-8编码代码得到二进制数据,改变密钥中某个数字或增加减少某个数字,会使加密后的二进制发生很大的变动,加密效果好。
(1)分割成无规律小段:通过密钥1和密钥2将二进制数据无规则分割成很多段,段数和每段的长度不固定,密钥1中元素为基本切割长度,第1轮切割长度是密钥list1的第一位到末位数字与密钥2的数字依次相加,第n轮切割长度是密钥1的第一位到末位数字与密钥2的数字的n倍依次相加,随着轮数的增多,其总体趋势是每段切割的越大越长,有负反馈的功能。因为若字符数过多,则需要切割成很多段,切割时越到后面每段的切割长度越长,则可以防止出现切割段数过多的情况,段数过多时加密的时间开销过大,不合理。
(2)段内异或:再将密钥1和密钥2的所有数字拼接成字符串并通过utf-8编码转换成二进制字符串bin_password,上一步骤将所有的二进制分割成很多段无规则长度的小段,
总段数为length,对于每一段的二进制数据bin与bin_password异或,若bin_password的长度大于或等于bin的长度,则将bin与bin_password的前len(bin_nums)个二进制依次异或,拼接组合成bin_end。若bin_password的长度小于bin的长度,则将bins前len(bin_password)位二进制与bin_password依次异或,对于bin未异或的二进制的按照这种方式依次与bin_password依次异或,结果拼接组合成bin_end,将每段异或后的结果bin_end存储到bin_end_list。
(3)对各段编号:分割成的总段数是length,对各段依次编号,从0开始,依次递增到length-1。
(4)判断编号编码位数:判断出编号数字通过几位二进制进行编码,若length在1到16以内,则编码位数n为4,若length是17到32以内,则序号数用5位二进制表示,若length是33到64以内,则序号数用6位二进制表示,若length满足2**(n-1)+1<=length<=2**n,则编码位数为n。获取编码位数后即可将所有编号数字转换成二进制数据。
(5)对编号二进制数据异或:将0到length-1这length个依次递增的整数依次转换为n位二进制数据,并拼接成二进制字符串bin_nums,若bin_password的长度大于或等于bin_nums的长度,则将bin_nums与bin_password的前len(bin_nums)个二进制依次异或,结果为bin_nums_end。若bin_password的长度小于bin_nums的长度,则将bin_nums前len(bin_password)位二进制与bin_password依次异或,对于bin_nums未异或的二进制的按照这种方式依次与bin_password依次异或,结果拼接组合成bin_nums_end。
(6)获取打乱顺序后编号:将bin_nums_end按n位二进制依次截断并转换为整数存储在list_nums中,将list_nums深度拷贝成list_nums_sort,将list_nums_sort按照从小到大顺序进行排序,在list_nums中寻找list_nums_sort的各元素,将各元素在list_nums中的位置信息存储到列表list_end中,若list_nums_sort中有重复的元素,则在list_nums中找完所有的重复元素。list_end中存储的就是将0到lenght-1这length个整数打乱后的编号。
(7)按乱序编号输出各段数据:最后按照此编号顺序输出bin_end_list的元素,拼接在一起即加密后的二进制数据。
2.解密算法:
跟加密过程前面步骤一样,获取对所有二进制数据进行切割的信息list_cut,将密钥1和密钥2的所有数字拼接成字符串并通过utf-8编码转换成二进制字符串bin_password,通过总段数length和bin_password生成一个含有0到length-1这length个整数的无序数组list_disrupt,通过list_cut和list_disrupt得到加密时命名的编号指定的这段二进制数据在异或后并打乱顺序输出的二进制数据中的位置范围,接下来可获取加密时命名的编号指定的这段二进制数据对应的异或后的二进制数据,再将其与bin_password进行异或,最后将异或后的二进制串依次输出即可获取所有字符用utf-8编码得到的二进制数据。
3.密钥加密
"$g5h*b!;"作为管理员的密码,至少为8位,可使用ASCII码表的ASCII值为33到126对应的控制字符。因此密码至少有94的8次方种可能,很难破解。通过管理员输入的密码,生成每个用户即编号对应的密码,位数和取值范围同上。
将密码转换为对应的ASCII值,将其拼接生成一个整数,作为随机种子,为每个编号各生成8个33到126范围内的整数,将其转换成8个控制字符分发给用户作为私人密码。将每个编号对应的8个整数拼接生成整数,作为随机种子,随机生成24个33到126范围内的整数。前8个整数拼接生成一个整数,作为随机种子,随机生成两个10到100范围内的整数作为密钥1和密钥2的长度;中间8个整数拼接生成一个整数,作为随机种子,随机生成密钥1长度个1到1000范围内的整数,作为密钥1;最后8个整数拼接生成一个整数,作为随机种子,随机生成密钥2长度个1到1000范围内的整数,作为密钥2。密钥1和密钥2可组合成私人密钥,所有用户即编号对应的私人密钥组合成管理员密钥。
用户收到私人密码后,可用上述方法生成私人密钥,管理员和用户只需输入至少8位的密码即可实现加密解密过程,密码位数较少,容易记忆,若位数过多,需用文件保存则容易被攻击获取。
二:如图1-2所示,加密解密算法的应用
1.excel文件保护系统思路
excel文件里有标题以及标题对应的信息,其唯一属性是编号,编号的标题位置flage需要根据excel文件中信息手动输入,如flage="F2",则第F列是所有编号所在列,编号所在的行大于或等于3。编号和所有标题不需加密,对其余信息进行加密实现文件保护功能。对每个编号随机设置一个密钥,并保证密钥的设置是无规律的,整数的长度和大小都不一致。如{'103591210003907': [806, 936, 339, 925, 929, 507, 264, 455, 818, 601,560, 736, 855, 453, 123, 269, 833, 909, 405, 61, 434, 428, 708, 998, 581,850, 356, 35, 666, 550, 646, 133, 292, 914, 627, 524, 652, 793, 520, 606,408, 757, 349, 419, 55, 944, 222, 609, 838, 91, 637, 50, 399, 594, 144, 530,738, 21, 839, 701, 545, 288, 716, 326, 538, 291, 712, 559, 111, 678, 804,841, 837, 922, 344, 898, 632, 127, 367, 847, 517, 775, 378, 178, 246, '#',282, 251, 526, 623, 943, 249, 74, 220, 956, 917, 30, 46, 326, 170, 484, 338,202, 102, 737, 263, 729, 861, 680, 617, 568, 38, 938, 476, 423, 740]}密钥由编号,密钥1和密钥2组成,是字典形式,密钥1和2通过”#”进行划分。密钥1和密钥2的长度可设定为10到100以内,大小可设定为1到1000以内的整数。管理员有所有编号对应的密钥,设置完密钥后私发给所有编号对应的个人,个人只有自己的密钥,因此只能解密出个人信息,而他人信息是无法获取的,管理员有所有的密钥,因此可解密出所有编号对应的信息。界面中可转换输入文本和输出文本对应的文本框,方便操作。
2.加密的两种形式
针对加密有两种形式,第一种是对整个excel文件行加密,第二种是将个人信息加密后上传到excel表格中。
(1)对整个excel文件加密
首先需要提取excel表格中所有信息,根据其所在的行号将对应信息(若此位置无任何信息,用空字符表示)存储在字典1中,同时需要将每行单元格对应位置含有的字符个数存储在字典2中。通过学生编号标题所在位置得知哪些信息不需要加密,哪些信息需要加密。
将字典1中需要加密的信息逐位置转换为utf-8编码,同时将对应位置的二进制长度存储在字典3中,将字典1中需要加密的每行单元格的所有二进制信息通过这位学生专属密钥进行加密,将加密后的二进制和对应行号信息存储在字典4中。
通过字典3将字典4中每行加密后的二进制信息进行分割,每一行分割后的二进制信息存储在列表,通过该列表和学生编号标题所在位置将所有加密后的二进制信息写入excel表格中。
(2)将个人信息加密后上传到excel表格中
将个人信息根据单元格位置通过"\"进行分割,如小明\男\21\电子信息,通过专用模式将此信息进行utf-8编码变成二进制1110010110110000100011111110011010011000100011101110011110010100101101110011001000110001111001111001010010110101111001011010110110010000111001001011111110100001111001101000000110101111再加密成
start: 001001010101011100100100111000010101011101111100 2:100110110111000001011100 3: 0110101010011111
4:010110100111110001110011100101011110110111101011100111001001011101110000100001010001010001101110接下来解密,最后通过utf-8解码成小明\男\21\电子信息,这样可判定utf-8编码解码和加密解密过程中有无错误,将加密后得到的二进制信息通过start,2:,3:,4:等标志信息划分依次复制粘贴进对应的excel文件单元格中。
3.对utf-8编码代码的改进
(1)utf-8编码即把Unicode转换成UTF-8字节序列,可通过bin(int(str1.encode('utf-8').hex(), 16)).replace('0b','')实现,utf-8解码即把UTF-8字节序列转换成Unicod,可通过bytes.fromhex(hex(int(str2, 2))[2:]).decode('utf-8')实现,但是对于excel文件中信息进行utf-8编码时不能使用此代码,因为对于数字其二进制长度是6,对于字母二进制长度是7,对于汉字二进制长度是24,加密后填入对应单元格位置后无法通过其位数判断出相应的符号数目。因此需要对单个字节的符号对应的二进制进行扩充至8位,不足的可以在高位补0。根据utf-8编码规则,若是单字节的符号,第一位是0,后七位是该符号的unicode码,对于n字节的符号,第一个字节前n位是1,因此可采用以下方法获取单元格对应的符号数目。若是单字节,则符号数加1,对二进制进行8位截取可往后移动8位再进行8位截取,若是n字节,则符号数加1,对二进制进行8位截取可往后移动8*n位再进行8位截取,通过截取的这8位二进制首位是否为0以及前几位连续几个1来判断是几个字节的符号。
(2)utf-8解码可用bytes.fromhex(hex(int(str2, 2))[2:]).decode('utf-8')实现,通过获取每个单元格对应的符号数目将解码后得到的符号串进行分割依次写入excel文件相应的单元格中。
4.解密的两种形式
读取加密后的excel文件中的二进制信息,将所有信息存储在字典1中,解密分为整个excel文件信息解密和私人信息解密,通过提取的密钥来判断。
(1)整个excel文件信息解密
若密钥的字典长度为所有编号总数,为整个excel文件信息解密,通过唯一属性标题位置flage知从哪一行开始提取二进制信息,通过所有编号的密钥将每行单元格对应的所有二进制信息解密并存储在字典2中,通过字典1知每行的每个单元格对应多少位二进制,通过utf-8编码规律和字典1知各个单元格位置存储的符号数目,各单元各对应的符号数目的信息存储在字典3中。通过字典2知每行单元格对应的所有解密后的二进制信息,将其通过utf-8解码转换为符号,通过字典3将符号进行划为依次和单元格相对应,然后写入excel文件中。最后将此加密后再解密的excel文件中的每一个单元格中信息与原excel文件进行对比,若全部一致则输出解密后确认无误,若有一处信息不一致则输出解密后发现错误。
(2)个人信息解密
若密钥的字典长度是1,为个人信息解密,通过密钥知此人的编号,通过字典1获取此人的全部二进制信息,先将二进制解密,若是单字节的符号,则第一位是0,后七位是该符号的unicode码,对于n字节的符号,第一个字节前n位是1,根据此规律,可以得到各个单元格存储的二进制信息对应的符号数目,将其存储在列表1中。将所有二进制信息通过utf-8解码转换为符号,根据列表1对符号进行划分得到每个单元格对应的符号。通过唯一属性即编号的标题位置信息找到一系列小标题,将小标题与该学生的信息对应输出即可将个人信息解密。
Claims (3)
1.一种用于excel文件的加密解密算法,其特征在于:具体包括有:
(1)加密算法:
(1-1)分割成无规律小段:对所有明文数据用utf-8编码代码得到二进制数据,通过密钥1和密钥2将二进制数据无规则分割成很多段,段数和每段的长度不固定,密钥1中元素为基本切割长度,第1轮切割长度是密钥list1的第一位到末位数字与密钥2的数字依次相加,第n轮切割长度是密钥1的第一位到末位数字与密钥2的数字的n倍依次相加;
(1-2)段内异或:将密钥1和密钥2的所有数字拼接成字符串并通过utf-8编码代码转换成二进制字符串bin_password,步骤(1-1)中将所有的二进制分割成很多段无规则长度的小段,总段数为length,对于每一段的二进制数据bin与二进制字符串bin_password异或,若二进制字符串bin_password的长度大于或等于二进制数据bin的长度,则将二进制数据bin与二进制字符串bin_password的前len个二进制依次异或,拼接组合成二进制数据bin_end;若二进制字符串bin_password的长度小于二进制数据bin的长度,则将二进制数据bin前len位二进制与二进制字符串bin_password依次异或,对于二进制数据bin未异或的二进制按照这种方式依次与二进制字符串bin_password依次异或,结果拼接组合成二进制数据bin_end,将每段异或后的结果二进制数据bin_end存储到列表bin_end_list;
(1-3)对各段编号:分割成的总段数是length,对各段依次编号,从0开始,依次递增到length-1;
(1-4)判断编号编码位数:判断出编号数字通过几位二进制进行编码,若length在1到16以内,则编码位数n为4,若length是17到32以内,则序号数用5位二进制表示,若length是33到64以内,则序号数用6位二进制表示,若length满足2**(n-1)+1<=length<=2**n,则编码位数为n,获取编码位数后将所有编号数字转换成二进制数据;
(1-5)对编号二进制数据异或:将0到length-1这length个依次递增的整数依次转换为n位二进制数据,并拼接成二进制字符串bin_nums,若二进制字符串bin_password的长度大于或等于二进制字符串bin_nums的长度,则将二进制字符串bin_nums与二进制字符串bin_password的前len个二进制依次异或,结果为字符串bin_nums_end;若二进制字符串bin_password的长度小于二进制字符串bin_nums的长度,则将二进制字符串bin_nums前len位二进制与二进制字符串bin_password依次异或,对于二进制字符串bin_nums未异或的二进制的按照这种方式依次与二进制字符串bin_password依次异或,结果拼接组合成字符串bin_nums_end;
(1-6)获取打乱顺序后编号:将列表bin_nums_end按n位二进制依次截断并转换为整数存储在列表list_nums中,将列表list_nums深度拷贝成列表list_nums_sort,将列表list_nums_sort按照从小到大顺序进行排序,在列表list_nums中寻找列表list_nums_sort的各元素,将各元素在列表list_nums中的位置信息存储到列表list_end中,若列表list_nums_sort中有重复的元素,则在列表list_nums中找完所有的重复元素;列表list_end中存储的就是将0到lenght-1这length个整数打乱后的编号;
(1-7)按乱序编号输出各段数据:最后按照此编号顺序输出列表bin_end_list的元素,拼接在一起即加密后的二进制数据;
(2)解密算法:
获取对所有二进制数据进行切割的信息list_cut,将密钥1和密钥2的所有数字拼接成字符串并通过utf-8编码转换成二进制字符串bin_password,通过总段数length和二进制字符串bin_password生成一个含有0到length-1这length个整数的无序数组list_disrupt,通过信息list_cut和数组list_disrupt得到加密时命名的编号指定的这段二进制数据在异或后并打乱顺序输出的二进制数据中的位置范围,接下来获取加密时命名的编号指定的这段二进制数据对应的异或后的二进制数据,再将其与二进制字符串bin_password进行异或,最后将异或后的二进制串依次输出获取所有字符,并用utf-8编码得到二进制数据;
(3)密钥加密
将密钥转换为对应的ASCII值,将其拼接生成一个整数,作为随机种子,为每个编号各生成8个33到126范围内的整数,将其转换成8个控制字符分发给用户作为私人密码;将每个编号对应的8个整数拼接生成整数,作为随机种子,随机生成24个33到126范围内的整数;前8个整数拼接生成一个整数,作为随机种子,随机生成两个10到100范围内的整数作为密钥1和密钥2的长度;中间8个整数拼接生成一个整数,作为随机种子,随机生成密钥1长度个1到1000范围内的整数,作为密钥1;最后8个整数拼接生成一个整数,作为随机种子,随机生成密钥2长度个1到1000范围内的整数,作为密钥2;密钥1和密钥2组合成私人密钥,所有用户即编号对应的私人密钥组合成管理员密钥。
2.一种基于加密解密算法的excel文件保护方法,其特征在于:具体包括如下内容:
1)excel文件里有标题以及标题对应的信息,其唯一属性是编号,编号的标题位置flage根据excel文件中信息手动输入,编号和所有标题不需加密,对其余信息进行加密;对每个编号随机设置一个密钥,密钥由编号、密钥1和密钥2组成,是字典形式,密钥1和2通过特殊符号进行划分;密钥1和密钥2的长度设定为10到100以内,大小设定为1到1000以内的整数;管理员有所有编号对应的密钥,设置完密钥后私发给所有编号对应的个人,个人只有自己的密钥,因此只能解密出个人信息,管理员有所有的密钥,因此可解密出所有编号对应的信息;
2)两种加密形式
第一种是对整个excel文件加密,第二种是将个人信息加密后上传到excel表格中;
2-1)对整个excel文件加密
首先提取excel表格中所有信息,根据其所在的行号将对应信息存储在字典1中,同时需要将每行单元格对应位置含有的字符个数存储在字典2中,通过编号标题所在位置得知哪些信息不需要加密,哪些信息需要加密;
将字典1中需要加密的信息逐位置转换为utf-8编码,同时将对应位置的二进制长度存储在字典3中,将字典1中需要加密的每行单元格的所有二进制信息通过专属密钥进行加密,将加密后的二进制和对应行号信息存储在字典4中;
通过字典3将字典4中每行加密后的二进制信息进行分割,每一行分割后的二进制信息存储在列表,通过该列表和编号标题所在位置将所有加密后的二进制信息写入excel表格中;
2-2)将个人信息加密后上传到excel表格中
将个人信息根据单元格位置通过特殊符号进行分割,并将此信息进行utf-8编码变成二进制信息,然后加密,再解密,最后通过utf-8解码,用于判定utf-8编码解码和加密解密过程中有无错误,将加密后得到的二进制信息通过标志信息划分依次复制粘贴进对应的excel文件单元格中;
3)两种解密形式
读取加密后的excel文件中的二进制信息,将所有信息存储在字典1中,解密分为整个excel文件信息解密和私人信息解密,通过提取的密钥来判断;
3-1)整个excel文件信息解密
若密钥的字典长度为所有编号总数,为整个excel文件信息解密,通过唯一属性标题位置得知从哪一行开始提取二进制信息,通过所有编号的密钥将每行单元格对应的所有二进制信息解密并存储在字典2中,通过字典1得知每行的每个单元格对应多少位二进制,通过utf-8编码规律和字典1得知各个单元格位置存储的符号数目,各单元格对应的符号数目的信息存储在字典3中;通过字典2得知每行单元格对应的所有解密后的二进制信息,将其通过utf-8解码转换为符号,通过字典3将符号进行划为依次和单元格相对应,然后写入excel文件中;最后将此加密后再解密的excel文件中的每一个单元格中信息与原excel文件进行对比,若全部一致则输出解密后确认无误,若有一处信息不一致则输出解密后发现错误;
3-2)个人信息解密
若密钥的字典长度是1,为个人信息解密,通过密钥知此人的编号,通过字典1获取此人的全部二进制信息,先将二进制解密,若是单字节的符号,则第一位是0,后七位是该符号的unicode码,对于n字节的符号,第一个字节前n位是1,根据此规律,得到各个单元格存储的二进制信息对应的符号数目,将其存储在列表1中;将所有二进制信息通过utf-8解码转换为符号,根据字典1对符号进行划分得到每个单元格对应的符号;通过唯一属性即编号的标题位置信息找到一系列小标题,将小标题与此人的信息对应输出即可将个人信息解密。
3.根据权利要求2所述的一种基于加密解密算法的excel文件保护方法,其特征在于:所述的utf-8编码代码,具体内容如下:对单个字节的符号对应的二进制进行扩充至8位,不足的在高位补0;若是单字节的符号,第一位是0,后七位是该符号的unicode码,对于n字节的符号,第一个字节前n位是1,因此采用以下方法获取单元格对应的符号数目:若是单字节,则符号数加1,对二进制进行8位截取往后移动8位再进行8位截取,若是n字节,则符号数加1,对二进制进行8位截取往后移动8*n位再进行8位截取,通过截取的这8位二进制首位是否为0以及前几位连续几个1来判断是几个字节的符号;
utf-8解码用bytes.fromhex(hex(int(str2,2))[2:]).decode('utf-8')实现,通过获取每个单元格对应的符号数目将解码后得到的符号串进行分割依次写入excel文件相应的单元格中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210236547.6A CN114580001B (zh) | 2022-03-11 | 2022-03-11 | 一种用于excel文件的加密解密算法及文件保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210236547.6A CN114580001B (zh) | 2022-03-11 | 2022-03-11 | 一种用于excel文件的加密解密算法及文件保护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114580001A CN114580001A (zh) | 2022-06-03 |
CN114580001B true CN114580001B (zh) | 2022-09-06 |
Family
ID=81779914
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210236547.6A Active CN114580001B (zh) | 2022-03-11 | 2022-03-11 | 一种用于excel文件的加密解密算法及文件保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114580001B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005196620A (ja) * | 2004-01-09 | 2005-07-21 | Chugoku Electric Power Co Inc:The | 文書保護管理システムおよび方法 |
CN107800714A (zh) * | 2017-11-10 | 2018-03-13 | 中国民生银行股份有限公司 | 一种客户端的文件展现方法和装置 |
CN109657769A (zh) * | 2018-12-29 | 2019-04-19 | 安徽大学 | 一种基于游程编码的二维码信息隐藏方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103516523A (zh) * | 2013-10-22 | 2014-01-15 | 浪潮电子信息产业股份有限公司 | 一种基于云存储的数据加密体系架构 |
US20160099724A1 (en) * | 2014-10-07 | 2016-04-07 | Ivan Dossev | System and method for improved utf-8 encoding |
KR102382850B1 (ko) * | 2020-04-29 | 2022-04-05 | 주식회사 쓰리케이소프트 | Xml 웹문서 보안 방법 |
-
2022
- 2022-03-11 CN CN202210236547.6A patent/CN114580001B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005196620A (ja) * | 2004-01-09 | 2005-07-21 | Chugoku Electric Power Co Inc:The | 文書保護管理システムおよび方法 |
CN107800714A (zh) * | 2017-11-10 | 2018-03-13 | 中国民生银行股份有限公司 | 一种客户端的文件展现方法和装置 |
CN109657769A (zh) * | 2018-12-29 | 2019-04-19 | 安徽大学 | 一种基于游程编码的二维码信息隐藏方法 |
Non-Patent Citations (3)
Title |
---|
Optical Filter Net: A Spectral-Aware RGB Camera Framework for Effective Green Pepper Segmentation;Jun Yu 等;《IEEE Access》;20210621;第90142-90152页 * |
Research on Index Scheme of Encrypted XML Data Structure;Wei Wei 等;《2020 International Conference on Cyber-Enabled Distributed Computing and Knowledge Discovery (CyberC)》;20200127;第260-263页 * |
XML安全技术的应用研究;耿建勇;《中国优秀硕士学位论文全文数据库 信息科技辑》;20070215(第2期);第I138-371页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114580001A (zh) | 2022-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5548648A (en) | Encryption method and system | |
US8284933B2 (en) | Encrypting variable-length passwords to yield fixed-length encrypted passwords | |
CN101461173B (zh) | 同音替代对称加密 | |
CN110299989B (zh) | 一种中英文字符串的加密、解密方法 | |
CN101610088B (zh) | 基于具有安全特性的压缩技术来编码数据的系统和方法 | |
CN116032474B (zh) | 一种基于大数据计算机网络安全防护系统 | |
CN112202984B (zh) | 一种基于纠错冗余的密文域可逆信息隐藏方法 | |
CN113194213B (zh) | 一种基于秘密共享和混沌映射的png图像信息隐藏和恢复方法 | |
CN101335616B (zh) | 一种具有无限密钥空间的对称加密方法 | |
CN109861810B (zh) | 一种基于混沌块加密算法的数据加密方法及解密方法 | |
US20120284528A1 (en) | Multi-purpose multi-dimensional, variable and multi-key e-mail and data encryption method | |
CN108197484B (zh) | 一种分布式存储环境下实现节点数据安全的方法 | |
US7925012B2 (en) | Method and system for the secure distribution of compressed digital texts | |
CN102761418B (zh) | 一种字符压缩加密方法 | |
Kataria et al. | ECR (encryption with cover text and reordering) based text steganography | |
CN115470508B (zh) | 一种版式文件矢量化加密方法 | |
CN110543778A (zh) | 一种字符数据线性随机加密和解密算法 | |
Vinodhini et al. | A survey on DNA and image steganography | |
US10505715B2 (en) | Method and system of synchronous encryption to render computer files and messages impervious to pattern recognition and brute force attacks | |
CN106982116B (zh) | 一种基于可逆逻辑电路的aes的本地文件加密方法 | |
Sermeno et al. | Modified Vigenere cryptosystem: An integrated data encryption module for learning management system | |
CN116894273B (zh) | 基于异或和求余的文件加密方法、解密方法、设备及介质 | |
CN114580001B (zh) | 一种用于excel文件的加密解密算法及文件保护方法 | |
CN114697671B (zh) | 一种建筑工程质量管理系统 | |
CN115297218A (zh) | 基于哈夫曼编码规则和位置图压缩的可逆数据隐藏方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |