CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  数据库(包含打印,安装,报表)

如何对数据库中字段的中文内容进行加密与解密? 急用,在线等!!!

楼主jhliuguiping(jhl)2004-09-01 21:50:25 在 VB / 数据库(包含打印,安装,报表) 提问

我曾找到的UserCode和UserDeCode,只能针对英文及数字,对有的中文可以,但有的不行(报告溢出错误),有无通用的针对中文的加解密函数,急盼!!  
   
  Function   UserCode(password   As   String)   As   String  
  '用户口令加密  
          Dim   il_bit,   il_x,   il_y,   il_z,   il_len,   i   As   Long  
          Dim   is_out   As   String  
          il_len   =   LenB(password)  
          il_x   =   0  
          il_y   =   0  
          is_out   =   ""  
          For   i   =   1   To   il_len  
                  il_bit   =   AscB(MidB(password,   i,   1))         'b系列支持中文  
                     
                  il_y   =   (il_bit   *   13   Mod   256)   +   il_x   -   5  
                  is_out   =   is_out   &   ChrB(Fix(il_y))     '取整   int和fix区别:   fix修正负数  
                  il_x   =   il_bit   *   13   /   256  
          Next  
          is_out   =   is_out   &   ChrB(Fix(il_x))  
             
          password   =   is_out  
          il_len   =   LenB(password)  
          il_x   =   0  
          il_y   =   0  
          is_out   =   ""  
          For   i   =   1   To   il_len  
                  il_bit   =   AscB(MidB(password,   i,   1))  
                  '取前4位值  
                  il_y   =   il_bit   /   16   +   64  
                  is_out   =   is_out   &   ChrB(Fix(il_y))  
                  '取后4位值  
                  il_y   =   (il_bit   Mod   16)   +   64  
                  is_out   =   is_out   &   ChrB(Fix(il_y))  
          Next  
          UserCode   =   is_out  
  End   Function  
   
   
  Function   UserDeCode(password   As   String)   As   String  
  '口令解密  
          Dim   is_out   As   String  
          Dim   il_x,   il_y,   il_len,   i,   il_bit   As   Long  
   
          il_len   =   LenB(password)  
          il_x   =   0  
          il_y   =   0  
          is_out   =   ""  
          For   i   =   1   To   il_len   Step   2  
                  il_bit   =   AscB(MidB(password,   i,   1))  
                  '取前4位值  
                  il_y   =   (il_bit   -   64)   *   16  
                  '取后4位值  
                  'dd   =   AscW(Mid(password,   i   +   1,   1))   -   64  
                  il_y   =   il_y   +   AscB(MidB(password,   i   +   1,   1))   -   64  
                  is_out   =   is_out   &   ChrB(il_y)  
          Next  
   
          il_x   =   0  
          il_y   =   0  
          password   =   is_out  
          is_out   =   ""  
   
          il_len   =   LenB(password)  
          il_x   =   AscB(MidB(password,   il_len,   1))  
          For   i   =   (il_len   -   1)   To   1   Step   -1  
                  il_y   =   il_x   *   256   +   AscB(MidB(password,   i,   1))  
                  il_x   =   il_y   Mod   13  
                  is_out   =   ChrB(Fix(il_y   /   13))   &   is_out  
          Next  
          UserDeCode   =   is_out  
  End   Function 问题点数:0、回复次数:4Top

1 楼EisenHammer(奥古斯都)回复于 2004-09-02 09:16:28 得分 0

可以不用别人的代码,自己编写加密/解密函数。  
   
  比如加密的时候每个字符统统减去一个常数,解密的时候再加上去。  
   
  比如加密的时候前面的字符的Unicode值减去后一个字符的Unicode值,存在前一个字符的位置,最后一个字符的Unicode值减去第一个字符的Unicode值存在最后一个字符的位置上;解密的时候反过来。Top

2 楼3days(三天)回复于 2004-09-02 09:20:48 得分 0

本人在操作数据库时,考虑到该数据库还有可能被其他软件打开,所以想能否有另外一种方式把数据库中数据进行加密呢,也  
  就是说,即使别人利用其他的软件打开了该数据库,看到的也是一片乱码,根本不知道数据库进而是什么内容。出于这种情况,本人利用VB中自带  
  RND()函数的功能编写了如下加密解密方法。  
  当RND()的参数(我们称它为种子)为负值时,同一种子产生同一个随机序列,同时VB还具有强大的二进制技术功能。  
  这样我们可以按以下方法实现字符串内容的加密解密。  
   
  源程序如下:  
   
  Public   Function   StringEnDeCodecn(strSource   As   String,   MA)   As   String  
  '该函数只对中西文起到加密作用  
  '参数为:源文件,密码  
  On   Error   GoTo   ErrEnDeCode  
  Dim   X   As   Single  
  Dim   CHARNUM   As   Long,   RANDOMINTEGER   As   Integer  
  Dim   SINGLECHAR   As   String   *   1  
  Dim   strTmp   As   String  
  If   MA   <   0   Then  
  MA   =   MA   *   (-1)  
  End   If  
  X   =   Rnd(-MA)  
  For   i   =   1   To   Len(strSource)   Step   1   '取单字节内容  
  SINGLECHAR   =   Mid(strSource,   i,   1)  
  CHARNUM   =   Asc(SINGLECHAR)  
  g:   RANDOMINTEGER   =   Int(127   *   Rnd)  
  If   RANDOMINTEGER   <   30   Or   RANDOMINTEGER   >   100   Then   GoTo   g  
  CHARNUM   =   CHARNUM   Xor   RANDOMINTEGER  
  strTmp   =   strTmp   &   Chr(CHARNUM)  
  Next   i  
  StringEnDeCodecn   =   strTmp  
  Exit   Function  
  ErrEnDeCode:  
  StringEnDeCodecn   =   ""  
  MsgBox   Err.Number   &   "\"   &   Err.Description  
  End   Function  
   
  使用方法:  
  tmp=StringEnDeCodecn("中华人民共和国",75)  
  如果要解密的话,只须键入以下语句:  
  tmp1=StringEnDeCodecn(tmp,75)Top

3 楼ajianchen2002(【改变自己·改变命运】)回复于 2004-09-02 15:14:15 得分 0

''下面的是一种加密中含有中文字符的字符串的模块  
  ''加密模块  
  'Public   Function   Crypt2(StringToEncrypt   As   String,   Optional   AlphaEncoding   As   Boolean   =   False)   As   String  
  '         On   Error   GoTo   ErrorHandler  
  '         Dim   Char   As   String  
  '         Dim   i   As   Integer  
  '         If   Trim(StringToEncrypt)   =   ""   Then  
  '                 Crypt   =   StringToEncrypt  
  '                 Exit   Function  
  '         End   If  
  '         Crypt   =   ""  
  '         For   i   =   1   To   Len(StringToEncrypt)  
  '                 Char   =   Asc(Mid(StringToEncrypt,   i,   1))  
  '                 Crypt   =   Crypt   &   Len(Char)   &   Char  
  '         Next   i  
  '         If   AlphaEncoding   Then  
  '                 StringToEncrypt   =   Crypt  
  '                 Crypt   =   ""  
  '                 For   i   =   1   To   Len(StringToEncrypt)  
  '                         Crypt   =   Crypt   &   Chr$(Mid(StringToEncrypt,   i,   1)   +   147)  
  '                 Next   i  
  '         End   If  
  '         Exit   Function  
  'ErrorHandler:  
  '         Encrypt   =   "Error   encrypting   string"  
  'End   Function  
  ''解密模块  
  'Public   Function   Decrypt2(StringToDecrypt   As   String,   Optional   AlphaDecoding   As   Boolean   =   False)   As   String  
  '         On   Error   GoTo   ErrorHandler  
  '         Dim   CharCode   As   String  
  '         Dim   CharPos   As   Integer  
  '         Dim   Char   As   String  
  '         Dim   i   As   Integer  
  '         If   Trim(StringToDecrypt)   =   ""   Then  
  '                 Decrypt   =   StringToDecrypt  
  '                 Exit   Function  
  '         End   If  
  '         If   AlphaDecoding   Then  
  '                 Decrypt   =   StringToDecrypt  
  '                 StringToDecrypt   =   ""  
  '                                 For   i   =   1   To   Len(Decrypt)  
  '                         StringToDecrypt   =   StringToDecrypt   &   (Asc(Mid(Decrypt,   i,   1))   -   147)  
  '                 Next   i  
  '         End   If  
  '         Decrypt   =   ""  
  '         Do  
  '                 CharPos   =   Left(StringToDecrypt,   1)  
  '                 StringToDecrypt   =   Mid(StringToDecrypt,   2)  
  '                 CharCode   =   Left(StringToDecrypt,   CharPos)  
  '                 StringToDecrypt   =   Mid(StringToDecrypt,   Len(CharCode)   +   1)  
  '                 Decrypt   =   Decrypt   &   Chr(CharCode)  
  '         Loop   Until   StringToDecrypt   =   ""  
  '         Exit   Function  
  'ErrorHandler:  
  '         Decrypt   =   "Error   decrypting   string"  
  'End   Function  
  ''调用方法  
  'Private   Sub   cmdCrypt_Click()  
  '         '加密  
  '         txtCrypt.Text   =   Crypt(txtSource.Text,   False)  
  '         '加密后字符化  
  '         txtCryptAlpha.Text   =   Crypt(txtSource.Text,   True)  
  '             '解密  
  '         Form1.Caption   =   Decrypt(txtCrypt.Text,   False)  
  'End   SubTop

4 楼jhliuguiping(jhl)回复于 2004-09-02 15:14:41 得分 0

To   3days(三天):  
   
      "所以想能否有另外一种方式把数据库中数据进行加密呢,也  
  就是说,即使别人利用其他的软件打开了该数据库,看到的也是一片乱码,根本不知道数据库进而是什么内容"  
   
      感谢你的帮助,但我用你代码对中文加密后的字串,写不进ACCESS数据库的字段中,我用的是ACCESS数据库,是否不能用在ACCESS数据库中呢?    
   
  Top

相关问题

  • 数据库字段的加密解密?
  • 字段加密
  • 寻求有关加密解密算法RC5的资料,急用!!!
  • mysql字段加密
  • 加密解密
  • 加密与解密?????
  • 我想给数据库中所有重要的字段都加密,请问.net里哪种加密算法比较好?最好有完整的加密解密例子(我用asp.net(VB))多些了!
  • 字段加密??马上给分
  • 如何访问加密的字段?
  • JAVA API 给密码字段加密

关键词

  • 加密
  • 字符
  • 解密
  • 数据库
  • 中文
  • 函数
  • 内容
  • unicode
  • il
  • stringtoencrypt

得分解答快速导航

  • 帖主:jhliuguiping

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo