admin管理员组

文章数量:1532644

2024年6月4日发(作者:)

基于常见加密算法的加解密工具设计

作者:陈一帆

来源:《中国新通信》 2018年第19期

【摘要】 本文介绍了一种多功能加解密工具的设计过程。该工具支持Url、Hex、Base64、

Ascii、MD5 等几种加密算法。本文对该工具涉及的相关加密算法进行了简要说明,并在增强容

错能力、改善中文兼容性、实现智能解密等方面提出了独到的思路和可行的方案。

【关键词】 密码学 加密算法 渗透测试

密码学在信息安全领域中占据着重要的一部分,为了提高信息传输过程的安全性,大部分

网页在传输信息的过程中都会将传输的内容进行加密。现在的加密方式虽然种类众多,常用的

网页加密方式只有Url、Hex、Base64、Ascii、MD5 等几种。为了对常见的各种加密方式进行

快速而便利的加解密,一款使用简单、容错能力强、中文兼容性好、能智能判断加密方式的多

功能加解密工具很有市场价值。

一、开发目标

1、目前状况。目前网络上同类型的工具大多数为爱好者自行开发,基本上都有常见加密方

式的加解密功能。但实际使用时普遍感觉不够便利,原因是容错能力不强,不支持中文加解密,

用户界面也不够友好。2、预期功能,开发本加解密工具的目的在于综合其他加解密工具的优点:

如支持多种加解密算法,体积小、运行速度快等。同时也应当避免其他加解密工具的缺点,如

容错能力差,对中文兼容性不好,操作繁琐等。预期开发完成的加解密工具应当支持Url、Hex、

Base64、Ascii、MD5 等多种加密方式,具有容错能力强,中文兼容性好,能智能判断加密方式

等优点。

二、常见算法介绍

1、Url 算法。该算法以字节为单位进行加密,将每个字节的内容用两位16 进制表示,然

后在每个字节前加% 符号。通过该方式加密的文本特征是% 符号约占三分之一,其余内容均为

0-F 的十六进制数。2、Hex 算法。该算法以字节为单位进行加密,将每个字节的内容用两位

16 进制表示,然后在文本最前方加0x 符号。通过该方式加密的文本特征是以0x 开头,后面

的内容均为0-F 的十六进制数。3、Base64 算法。该算法以每三个字节为单位进行加密,将三

个字节的内容拆分为四位64 进制数,然后用数字、大小写字母以及其他符号为64 进制数进行

编码,如果有空余的位置用= 符号补足。通过该方式加密的文本特征是以无规律的字母和数字

为主,长度为4 的倍数,末尾可能有一到两个= 符号。4、Ascii 算法。该算法以字节为单位

进行加密,将每个字节的内容转换为十进制数,然后用空格进行分隔。通过该方式加密的文本

特征是大部分内容为数字,每两到三位数字之间有空格进行分隔。5、MD5 算法。该算法为单向

的哈希算法,可以将任意长度的字符串抽象为32 位或16 位的摘要,由于该算法具有不可逆性、

抗修改性、强抗碰撞性等特点,因此经常被用于软件的数字签名。该方式加密的文本特征是长

度为32 位或16 位,并且内容均为0-F 的十六进制数。

三、容错原理与中文兼容性

由于以上的几种加密算法在原理上都支持对任意长度,任意内容的字符串进行加密,因此

加密算法的编写较为简单,包括中文的加密也是如此,一般系统默认使用GB2312 编码,将一

个汉字编码成两个字节,对这两个字节分别加密即可。主要的难点在解密算法上。因为加密算

法生成的格式是固定的,但在实际工作中,获取到的加密数据往往会有缺失和错漏,如果直接

进行解密,就会因为不符合加密格式而导致错误。这也是网络上大部分同类型工具的缺点。本

工具为了弥补这一缺点,采用预处理的方式,确保数据符合正确的格式,以便解密。比如,Url

算法正常加密的数据应当是一个% 符号加上两位十六进制数,然后再一个% 符号加上两位十六

进制数,如此反复。但实际应用中往往出现错漏,比如前面的% 符号缺失,中间出现0-F 以外

的字符,末尾的十六进制数重复等等。遇上这种情况,就需要通过预处理来找到正确的% 符号,

然后去除掉多余的字符。保证处理后的内容能正确被解密算法处理。同理,Hex 算法需要补全

0x 头并去除0-F 以外的字符,Base64 算法需要去除编码范围以外的符号并用= 补全。Acsii

算法需要去除数字和空格以外的字符,并且对过大的数字进行剔除,只保留前两三位。至于

MD5算法是单向加密,无法从加密后的内容反推回加密前的内容,所以只做了加密功能。至于

中文无法正常解密的问题,是因为部分加解密工具在设计时没有对中文做相应的特殊处理,导

致分开编码的中文内容没有被正确地合并识别。本工具对中文内容做了相应的处理,确保中文

内容能被正常识别。

四、实现智能解密

本工具设计了智能解密的创新功能,当用户点击智能解密时,首先识别加密数据是否有三

分之一是% 符号,如果是,那么识别为Url 加密;接着识别加密数据是否以0x 开头,并且十

六进制数占绝大多数,如果是,那么识别为Hex加密;再识别加密数据是否以= 符号结尾,并

且所有字符均在Base64 编码范围以内,如果是,那么识别为Base64 加密;然后识别加密数据

是否以数字和空格为主,如果是,那么识别为Acsii 加密;最后识别加密数据长度是否为32

位或16 位,并且所有字符均为十六进制数,如果是,那么识别为MD5加密。在完成识别后,

调用相应的解密算法,即可实现智能解密,如果加密数据与以上几种加密算法均不符合,那么

会提示不能确定该密码编码,请手动尝试。

结语:本文介绍了多功能加解密工具的开发过程,该工具与网络上同类型工具相比,具有

使用简单、容错能力强、中文兼容性好、能智能判断加密方式等优点。可以用于用于渗透测试、

弱口令排查、网页安全性检查、培训教学等多种场合,能有效提升工作效率。

本文标签: 加密工具算法方式进行