我没有那样指定过,我一般只指定长度,你试试下面的这个
 
KeyGenerator kg = KeyGenerator.getInstance("DES");
Key key = kg.generateKey();
String a="abcdefghijklmnopqrstuvwxyzxyznuc";//别人给你的字符串
SecureRandom sr=new SecureRandom(a.getBytes());//我没有用过这种用法,你试试。
kg.init(32, sr) ;
Cipher cipher = Cipher.getInstance("DES");
Good Luck。

解决方案 »

  1.   

    Sorry,上面的顺序有点问题,看下面这个KeyGenerator kg = KeyGenerator.getInstance("DES");
    String a="abcdefghijklmnopqrstuvwxyzxyznuc";//别人给你的字符串
    SecureRandom sr=new SecureRandom(a.getBytes());//我没有用过这种用法,你试试。
    kg.init(32, sr) ;
    Key key = kg.generateKey();
    Cipher cipher = Cipher.getInstance("DES");
      

  2.   

    Sorry,还是有点问题kg.init(32, sr) ;//DES的key长度不能低于56,你把它换成
    kg.init(56,sr);
      

  3.   

    会不会是Mode和Padding的问题,用ECB模式和PKCS5Padding这些东西试过没有?
      

  4.   

    112和168可以,但现在还不知道这样加密对方能不能解密
    ECB模式和PKCS5Padding没试
      

  5.   

    32的字符串?是不是16进制的哦!
    你直接将它转成byte数组就可以了啊!
      

  6.   

    3DES的密钥应该是24位的,不知道你那个32位的是怎么得来的
      

  7.   

    byte[] key = new byte[24];
    key = "3-des key".getBytes();SecretKey tripleDesKey = new SecretKeySpec(key, "DESede");
      

  8.   

    我知道了,TNND他们给的字符串是经过Base64加密过的,先要解密,之后就可以用了,谢谢各位了!