使用DES加密算法在VB6.0与C#下的加密后,密文不一致。哪位大侠,能指点!

解决方案 »

  1.   

     例:   输入的密码为wuzhenll,密钥的16进制表示为77 75 7A 68 65 6E 6C 6C   任意改变这64位数据的奇偶校验位,可以得到16个不同的密码,   把8个奇偶检验位全取反后:   w->v   u->t   z->{   h->i   e->d   n->o   l->m   形成新密码:vt{idomm   表面上新密码和原密码迥然不同,但是由于他们仅在奇偶校验位上有区别,所以用这两个密码进行加密解密操作得到的结果是一样的.   笔者建议使用安全系数较高的多密钥加密解密方案.   此外用户输入的密码的长度不受限制,当输入的密码长度为0时,使用缺省64位密码;当输入的密码长度大于8字节时,输入密码的前8个字节为有效密码. 
      

  2.   

    使用全00对全00加密,正确结果是。
    //
    DES ECB解密
    //
    KEY值为:00 00 00 00 00 00 00 00 
    //
    数据为:
    00 00 00 00 00 00 00 00 
    //
    解密过程为:
    //--
    数据为:00 00 00 00 00 00 00 00   结果为:8C A6 4D E9 C1 B1 23 A7 
    //
    结果为:
    8C A6 4D E9 C1 B1 23 A7 
      

  3.   


    //
    DES ECB加密
    //
    KEY值为:00 00 00 00 00 00 00 00 
    //
    数据为:
    00 00 00 00 00 00 00 00 
    //
    加密过程为:
    //--
    数据为:00 00 00 00 00 00 00 00   结果为:8C A6 4D E9 C1 B1 23 A7 
    //
    结果为:
    8C A6 4D E9 C1 B1 23 A7 
      

  4.   

    通常问题出在字符编码上。加密前需要将字符串变成字节数组,
    VB6 要么是直接的 Unicode 格式,要么用 StrConv() 转换成 DBCS 编码格式。
    而 C# 可以用各种 Encoder 进行编码转换。所以最好先都用字节数组进行加密,对比结果是否一致。
    然后调试对比一下字符串转字节数组是否一致。
    两个过程都一致了最终结果也就一致了。
      

  5.   

    楼主问题解决了吗,我这也需要vb6和c#  des加密 请指点一下