byte[] password=DES.createEncryptor(pwd);
String pp=new String(password)
这样转换后pp和password不一样

解决方案 »

  1.   

    如果
    byte[] password=pwd.getBytes();
    String pp=new String(password);
    这样就应该是一样了。
    而byte[] password=DES.createEncryptor(pwd);是对pwd产生了加密算法。不用解密算法当然就不一样了
      

  2.   

    你这样转换通过DES加密字符串,不是转换,结果当然不一样了
      

  3.   

    我要把String加密存入数据库
    然后再从库里读出来解密
    该怎么做?谢谢
      

  4.   

    我要把String加密存入数据库
    然后再从库里读出来解密
    该怎么做?谢谢
    我是这样做的首先:String pwd=“123”;
    我用DES加密byte[] password=DES.createEncryptor(pwd);然后转换成String
    String pp=new String(password);存入数据库
    然后从数据库中拿出来String t2=rs.getString("FpassWord");
    转换成byte[]byte[] tempwd=t2.getBytes();
    在解密String rightpwd=DES.createDecryptor(tempwd);
    比较rightpwd和pwd就不一样了怎么回事啊?
      

  5.   

    你DES这个类是哪里的啊?查它的API啊
      

  6.   

    http://dev.csdn.net/Develop/article/28/28239.shtm
      

  7.   

    我的DES就是用的上面那一个http://dev.csdn.net/Develop/article/28/28239.shtm
    没问题我试过,可能就是String 和 byte[]的转换有问题?
      

  8.   

    你从数据库取数换成这样试试看
    byte[] t2=rs.getBytes("FpassWord");
    String rightpwd=DES.createDecryptor(t2);看看对不对
      

  9.   

    还是不行,
    我这次没有转换直接把加密了的byte[] password=DES.createEncryptor(pwd);
    password存入数据库但当我用byte[] t2=rs.getBytes("FpassWord");拿出来打印出来就变了
    再用String rightpwd=DES.createDecryptor(t2);解密就不对了
      

  10.   

    这个DES的类本身可能就有问题
      

  11.   

    这个问题我也搞了很久了,想要做的效果和楼主一样不过都不行!http://dev.csdn.net/Develop/article/11/11898.shtmpublic static void main(String[] args) throws Exception{
        debug = true;
    //    byte[] key = getKey();
        byte[] key = "好好学习".getBytes();
        byte[] encodeByte = encode("测试加密".getBytes(),key);
        String str=new String(encodeByte);
        byte[] decodeByte = decode(str.getByte(),key);
        //decode(encode("测试加密".getBytes(),key),key);
        md5("测试加密".getBytes());
      }
      

  12.   

    把main函数改成上面这样就编译不过了!
    查看encodeByte 和 str.getByte()的2进制字符,绝大部分相同,只是最后一个字节改变了!
      

  13.   

    对于英文很简单
    String first,second;
    first="123456asdf"
    //string->byte[]
    byte bytearrary[]=first.getBytes();
    //byte[]->string
    for(int i=0;i<first.length();i++)
       second+=(char)bytearrary[i];
    中文得我也在找!
      

  14.   

    不太明白原理,帮你顶下,我有个建议,你可以debug下,看看转换过程中的字符串的值