base64怎么加密英汉夹杂的字符串?加密时英语还原成字节,去掉了后面的“0”而汉语不去掉。
附带的,EMAIL的解密时,解出来的汉字字节用StrConv(byte, vbUnicode)把字节还原成汉字,难道加密时是用StrConv(string, vbFromUnicode)转换成字节的?我感觉应先vbUnicode才能vbFromUnicode,先8->16 加“0“了,才有16->8 去"0",如果加密时已经用vbFromUnicode 16->8,还原时8->16怎么知道补充写什么。但测试网上的EMAIL确实可以用vbUnicode解密汉语,那他是vbFromUnicode转换后加密的吗?
8->16   8位转换成16位
16->8   16位转换成8位

解决方案 »

  1.   

    可能BAse64对汉语一个字符当两个字节处理。
      

  2.   

    赋到Byte()数组里面,用字节流加密。解密时只要赋回到String里面即可。
      

  3.   

    pigpag(噼里啪啦)老兄说得没错.用这种方法搞定.呵呵好人呀!!
      

  4.   

    pigpag(噼里啪啦) 
    说的不错
      

  5.   

    pigpag(噼里啪啦)  说的需要测试。我不知道其他的邮件工具是如何解密中文的,例如OE,等等。但我测试他们发出的邮件解密出的byte()是不能直接付值给字符串的,付值出来的是乱码,需要用我提到的String=StrConv(Byte(),vbUnicode)才能得到正确的中文。晚了一天才看到,不知道还有没有人来续,帮帮忙啊
      

  6.   

    所谓的测试就是用StrConv()进行再次转换,因为在String=Byte()时会由于不同的编码误解导致值乱码,而这种乱码内容实质是正确的。你说用StrConv(Byte(),vbUnicode)成功,那么就应该用vbUnicode。
      

  7.   

    Dim a() As Byte
    Dim b As Stringb = StrConv(a, vbUnicode)           'byte->string(contain gb2312,unicode etc.)
    a = StrConv(b, vbFromUnicode)       'string->byte(contain gb2312,unicode etc.)
      

  8.   

    呵呵,是指base64的编码、解码吧,需要把unicode编码转换为Ansi编码参考一下这个:
    http://www.ourdiy.net/info_detail.asp?infoid=61
    注意:其中的strUnicodeLen strUnicode2Ansi strAnsi2Unicode在vb中有更为简单的写法
      

  9.   

    谢谢,大家的关心,我找到正确的base64加密中文的方法了,还是用的
    byte() = StrConv(string, vbFromUnicode),
    在现有的邮件系统中是可用的,
    为什么.我就不懂了,
    vbFromUnicode,感觉有问题,但他可用.