一种加密和解密的实现方法技术

技术编号:35775419 阅读:19 留言:0更新日期:2022-12-01 14:18
一种对称加解密的方法,可以有效防止暴力破解。破解。

【技术实现步骤摘要】
一种加密和解密的实现方法


[0001]本专利技术涉及计算机及信息
本专利技术提供的是一种加密和解密的实现方法。

技术介绍

[0002]当前人们在使用计算传送文件时,文件内容经常被黑客和目标人员盗取,在这种情况下往往会造成非常大的经济损失。本专利技术提供一种对计算机文件内容进行加密和解密的方法,以提升网络上传送文件的安全性。

技术实现思路

[0003]本专利技术提供的加解密算法,其加密的表达形式为y=Encode(x,l,k),解密的表达形式为x= Decode(y,l,k,L)。
[0004]上述表达式中不同部分的含义如下:
[0005]Encode代表加密,Decode代表解密;
[0006]y指加密后的内容即密文;x指加密前的内容即明文;l指分块的长度,为偶数;k指密钥,L指明文的长度。
[0007]Encode加密运算步骤如下:
[0008]1、将原始明文按照顺序,分为指定长度的块,这些块满足如下条件:
[0009]块的长度由用户指定,但块的长度须为偶数字节;
[0010]如果最后一个块没有达到用户指定的长度,则采用随机数填充;
[0011]2、将分割后,每个块中的内容进行顺序反转;
[0012]3、第一个块的顺序反转处理
[0013]第一个字节和最后一个字节调换;
[0014]第二个字节和倒数第二个字节调换;
[0015]以此类推完成第一个块的处理。
[0016]4、其他块同样做反转处理;
[0017]5、将反转后的内容再次连接成为一个连续的内存区域;
[0018]6、将连接后内存区域中的每个位(bit)取反,即原来为0的位置改为1,原来为1的位置改为0;
[0019]7、将取反后的内存再次分块,此次分块按照密钥长度进行;
[0020]8、块的异或运算
[0021]第一个块的第一个字节和密钥的第一个字节做异或运算;
[0022]第一个块的第二个字节和密钥的第二个字节做异或运算;
[0023]以此类推完成第一个块的处理。
[0024]9、其他块同样做异或运算;
[0025]10、将处理完成的数据连接成为一个连续的内存区域;
[0026]11、对这块内存的数据采用Base58的方式进行编码输出,即为加密内容。
[0027]Decode解密运算步骤如下:
[0028]1、将输入的Base58解密为原始数据;
[0029]2、将Base58解密后的数据,按照密钥的长度进行分块;
[0030]3、块的异或运算
[0031]第一个块的第一个字节和密钥的第一个字节做异或运算;
[0032]第一个块的第二个字节和密钥的第二个字节做异或运算;
[0033]以此类推完成第一个块的处理。
[0034]4、其他块同样做异或运算;
[0035]5、将异或运算后的数据连接成为一个连续的内存区域;
[0036]6、将连接后内存区域中的每个位(bit)取反,即原来为0的位置改为1,原来为1的位置改为0;
[0037]7、按照分块长度,将取反后的数据再次进行分块;
[0038]8、第一个块的顺序反转处理
[0039]第一个字节和最后一个字节调换;
[0040]第二个字节和倒数第二个字节调换;
[0041]以此类推完成第一个块的处理。
[0042]9、其他块同样做反转处理;
[0043]10、将反转后的内容再次连接成为一个连续的内存区域;
[0044]11、按照明文长度,将最后多余的字节丢弃,剩余内容即为明文内容。
[0045]加密实施举例
[0046]1.原始数据:
[0047]明文x:0x000x110x220x330x440x550x660x770x880x990xaa0xbb0xcc0xdd0xee0xff0x120x340x56;
[0048]分块长度4;
[0049]密钥为:0xff0xff0xff
[0050]内容长度:19
[0051]2.按照步骤进行加密:
[0052]a)分块:
[0053]0x000x110x220x33
[0054]0x440x550x660x77
[0055]0x880x990xaa0xbb
[0056]0xcc0xdd0xee0xff
[0057]0x120x340x56
[0058]b)最后一块的长度小于分块长度,所以填充随机数0x78,填充后的结果如下:
[0059]0x000x110x220x33
[0060]0x440x550x660x77
[0061]0x880x990xaa0xbb
[0062]0xcc0xdd0xee0xff
[0063]0x120x340x560x78
[0064]c)每块进行反转,反转后的结果
[0065]0x330x220x110x00
[0066]0x770x660x550x44
[0067]0xbb0xaa0x990x88
[0068]0xff0xee0xdd0xcc
[0069]0x780x560x340x12
[0070]d)对每个位(bit)取反,取反后的结果
[0071]0xcc0xdd0xee0xff
[0072]0x880x990xaa0xbb
[0073]0x440x550x660x77
[0074]0x000x110x220x33
[0075]0x870xa90xcb0xed
[0076]e)将去饭后的内容连接成为一个连续的空间,如下
[0077]0xcc0xdd0xee0xff0x880x990xaa0xbb0x440x550x660x770x000x110x220x330x870xa90xcb0xed
[0078]f)按照密钥的长度进行分块,如下
[0079]0xcc0xdd0xee
[0080]0xff0x880x99
[0081]0xaa0xbb0x44
[0082]0x550x660x77
[0083]0x000x110x22
[0084]0x330x870xa9
[0085]0xcb0xed
[0086]g)使用密钥进行异或运算,结果如下
[0087]0x330x220x11
[0088]0x000x770x66
[0089]0x550x440xbb
[0090]0xaa0x990x88
[0091]0xff0xee0xdd
[0092]0xcc0x780x56
[0093]0x340x12
[0094]h)将异或后的数据连接成一个完成的内存空本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种对称加解密的算法,其加密输出为Base58编码格式的数据,解密输入为Base58编码格式的数据。2.根据权利要求1所述,加密和解密过程需要对数据分块...

【专利技术属性】
技术研发人员:李春敏
申请(专利权)人:深圳市华宇达实业有限公司
类型:发明
国别省市:

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

1