一。 私钥加密方案
加密(Encryption)是信息保护的一种必不可少的手段。目前有两种基本的加密方法,即私钥加密和公钥加密。用VB既可用自定义算法实现简便的私钥加密,也可通过调用Crypto API接口实现复杂的公钥加密。对于加密数据,若在Internet/Intranet上传送,则完整性鉴别也是必需的。本文介绍一种私钥加密技术,不仅能加密英文文本,而且能有效加密汉字,还能进行数据完整性鉴别。本加解密原理图如下:
密文文=HASH(DateTime)+HASH(DateTime+Key)+HASH(Text)+Encryption(Text,HASH(DateTime)+HASH(DateTime+Key)+HASH(Text))
二。 VB具体实现技术
1. 基本加解密函数(XOR):
在VB中提供了一个XOR函数,它既可对字符,也可对数字、布尔变量进行异或,两次异或的结果即为原值。因此,它是基本加解密函数。
例如:Ascw(“息”)XOR 28值为24943,24943 XOR 28 值为24687,Chrw(24687) 值为“息”。
2. 汉字的加密与解密方法
在VB中,字符的处理相当复杂,特别是汉字和英文字符混合处理,其结果更是无法预料。在VB内部,字符全部作为Unicode处理,并且VB支持三种类型的字符集,并提供了相应的字符处理函数。
VB支持的三种类型字符集是:
⑴ ANSI:一个字节表示一个字符,汉字被作为两个ANSI字符;
⑵ DBCS:双字节字符集,0~128表示ASCII字符,ASCII字符长度为1个字节,汉字等东亚字符的长度为2个字节,汉字被作为一个DBCS字符;
⑶ Unicode:用两个字节表示每个字符。ISO几乎为每种语言的每个字符和符号在0~65,535(216 -1)范围定义了一个数字,汉字被作为一个Unicode字符。
在VB6中,字符串的处理函数有ANSI/DBCS版本、二进制版本和Unicode版本。因此,对于汉字的处理相当复杂。
例如:
Asc(返回第一个字符的ANSI/DBCS字符代码);
AscB(返回第一个字节的值);
AscW(返回第一个Unicode字符之代码)。
例如:Asc(“息”)之值为:-12382,Chr(-12382)之值为:息,AscW(“息”)之值为:24687,Chrw(24687)之值为:息。
经过反复实验证实,使用Unicode字符集及Unicode字符集函数可较好的加密汉字。
本加解密方案中,汉字和英文字符的加解密均使用下列函数:
AscW( ):返回第一个Unicode字符之代码,每个英文和汉字均作为一个字符,其长度为1;
Mid( ) :取子串,每个英文和汉字均作为一个字符;
ChrW( ) :返回该代码所对应的Unicode字符ÿ
用VB6实现中英文文本的私钥加密——VB的另类用法
最新推荐文章于 2021-07-26 06:13:43 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)