本帖最后由 cn_a382 于 2010-12-24 16:13:01 编辑

解决方案 »

  1.   

    哦,这个程序是用来把输入的密码shuffle,也就是打乱的,不过它用了很多C语言的字符变换函数,我不知道java可不可以实现
      

  2.   

    与其去改它 不如用java去实现和它一样的功能
      

  3.   

    看到c就....
     还是c++ java好 
    不是面向对象好 
      

  4.   

    c语言的那些字符处理函数,java中差不多都有吧!你的意思说清楚,可以实现一个!
      

  5.   

    把你的意思说清楚了,或许可以帮你写一个!c语言中的那些字符串处理函数,java差不多都有的吧!
      

  6.   

    直接说想实现什么功能,用java写一个的了,周末了,闲人很多
      

  7.   

    未细究,简单的改写了一下:
    class Descrypt 
    {
    public static void main(String[] args){
    for (int i=0;i<999999 ;i++ )
    pub_base_EnDes(String.format("%06d",i));
    } public static void pub_base_EnDes(String pass){
    System.out.println( pass+" = \""+descrypt(pass)+"\"");
    }
    public static String descrypt(String pass){
     return Shuff_Data(CBexchange(0,pass));
    }
    public static String CBexchange(int f,String pass){
    char t[] =  pass.toCharArray();
    char s[] =  pass.toCharArray();
    switch (f) {
      case 0:
      t[0] = s[2];
      t[1] = s[5];
      t[2] = s[0];
      t[3] = s[4];
      t[4] = s[3];
      t[5] = s[1];
      break;
      case 1:
      t[0] = s[2];
      t[1] = s[5];
      t[2] = s[0];
      t[3] = s[4];
      t[4] = s[3];
      t[5] = s[1];
      break;
    }
    return new String(t);
    }
    public static String Shuff_Data(String pass){
    int offset = 0;
    int len1 = pass.length();
    char msg[] = pass.toCharArray();
    switch(len1) {
      case 16 :   
    msg[offset++]^= 0x01;
      case 15 :
    msg[offset++]^= 0x09;
      case 14 :
    msg[offset++]^= 0x0f;
      case 13 :
    msg[offset++]^= 0x02;
      case 12 :
    msg[offset++]^= 0x0c;
      case 11 :
    msg[offset++]^= 0x08;
      case 10 :
    msg[offset++]^= 0x02;
      case 9 :
    msg[offset++]^= 0x07;
      case 8 :
    msg[offset++]^= 0x06;
      case 7 :
    msg[offset++]^= 0x0a;
      case 6 :
    msg[offset++]^= 0x0d;
      case 5 :
    msg[offset++]^= 0x00;
      case 4 :
    msg[offset++]^= 0x08;
      case 3:
    msg[offset++]^= 0x03;
      case 2 :
    msg[offset++]^= 0x09;
      case 1 :
    msg[offset++]^= 0x0b;
      }
    return new String(msg);
    }
    }
      

  8.   

    这个还是说清楚点功能,直接用JAVA写一个···
      

  9.   

    改什么改啊
    用jni直接调用吧
      

  10.   

    JDK6的环境下可以执行。
    import java.util.Formatter;public class EncryptionDES { private static final int PASSWD_LEN = 6; public static String descrypt(String str) {
    if(str.length()>PASSWD_LEN)
    throw new IllegalArgumentException("the length of string must be less than seven");
    String pcMPin = new Formatter().format("%06d",
    Integer.valueOf(str)).out().toString();
    return ShuffData(CBExchange(0, pcMPin), PASSWD_LEN);
    } public static String baseEnDes(String passwd) {
    if(passwd.length()>PASSWD_LEN)
    throw new IllegalArgumentException("the length of string must be less than seven");
    String mm = descrypt(passwd);
    System.out.println(passwd + "=\"" + mm + "\"");
    return mm;
    } static String CBExchange(int f, String str) {
    char s[] = str.toCharArray();
    char t[] = new char[s.length];
    switch (f) {
    case 0:
    t[0] = s[2];
    t[1] = s[5];
    t[2] = s[0];
    t[3] = s[4];
    t[4] = s[3];
    t[5] = s[1];
    break;
    case 1:
    t[0] = s[2];
    t[1] = s[5];
    t[2] = s[0];
    t[3] = s[4];
    t[4] = s[3];
    t[5] = s[1];
    break;
    }
    return new String(t);
    } static String ShuffData(String msg, int len1) {
    char[] m = msg.toCharArray();
    int offset = 0;
    switch (len1) {
    case 16:
    m[offset++] ^= 0x01;
    case 15:
    m[offset++] ^= 0x09;
    case 14:
    m[offset++] ^= 0x0f;
    case 13:
    m[offset++] ^= 0x02;
    case 12:
    m[offset++] ^= 0x0c;
    case 11:
    m[offset++] ^= 0x08;
    case 10:
    m[offset++] ^= 0x02;
    case 9:
    m[offset++] ^= 0x07;
    case 8:
    m[offset++] ^= 0x06;
    case 7:
    m[offset++] ^= 0x0a;
    case 6:
    m[offset++] ^= 0x0d;
    case 5:
    m[offset++] ^= 0x00;
    case 4:
    m[offset++] ^= 0x08;
    case 3:
    m[offset++] ^= 0x03;
    case 2:
    m[offset++] ^= 0x09;
    case 1:
    m[offset++] ^= 0x0b;
    }
    return new String(m);
    } public static void main(String[] args) {
    int i, j, k, l, m, n;
    for (i = 0; i <= 9; i++) {
    for (j = 0; j <= 9; j++) {
    for (k = 0; k <= 9; k++) {
    for (l = 0; l <= 9; l++) {
    for (m = 0; m <= 9; m++) {
    for (n = 0; n <= 9; n++) {
    StringBuilder sb =new StringBuilder();
    sb.append(i).append(k).append(j);
    sb.append(l).append(m).append(n);
    baseEnDes(sb.toString());
    }
    }
    }
    }
    }
    }
    }}