用VB6实现中英文文本的私钥加密——VB的另类用法

本文介绍了如何使用VB6实现私钥加密技术,特别适用于中英文文本,包括汉字加密。通过XOR函数和Unicode字符集处理汉字,结合散列函数(HASH)确保数据完整性。加密过程中加入时间戳,保证每次加密结果不同,同时提供了加密和解密的VB代码实现。
摘要由CSDN通过智能技术生成

一。 私钥加密方案


  加密(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字符ÿ

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值