如何将一个c程序改写成JAVA程序

发布网友 发布时间:2022-04-23 12:55

我来回答

1个回答

热心网友 时间:2023-05-15 18:01

public static void main(String[] args) {

    String pass = "123456";
    byte[] data;
    byte[] salt = new byte[4];
    byte[] digest1 = new byte[20];
    byte[] tmpptr;
    int i, j;

    int len = 4 + pass.length();

    // c语言中打开linux文件中的/dev/urandom产生随机数
    // java这里模拟了
    Random random = new Random();
    salt[0] = (byte) random.nextInt(128);
    salt[1] = (byte) random.nextInt(128);
    salt[2] = (byte) random.nextInt(128);
    salt[3] = (byte) random.nextInt(128);

    System.out.print("Salt:");
    for (i = 0; i < 4; i++) {
        System.out.print(Integer.toHexString(salt[i]) + " ");
    }
    System.out.println();

    data = new byte[len];

    for (i = 0; i < 4; i++) {
        data[i] = salt[i];
    }

    char[] passArr = pass.toCharArray();
    for (i = 4; i < len; i++) {
        data[i] = (byte) passArr[i - 4];
    }

    System.out.print("\nData:");
    for (i = 0; i < len; i++) {
        System.out.print(Integer.toHexString(data[i]) + " ");
    }
    System.out.println();

    digest1 = sha1(data);

    for (i = 0; i < 20; i++) {
        System.out.print(Integer.toHexString(digest1[i]) + " ");
    }
    System.out.println();

    data = digest1;
    for (j = 0; j < 10000; j++) {
        tmpptr = sha1(data);
        data = tmpptr;
    }

    for (i = 0; i < 20; i++) {
        System.out.print(Integer.toHexString(data[i]) + " ");
    }
    System.out.println();

}


public static byte[] sha1(byte[] origin) {
    try {
        MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
        return mdTemp.digest(origin);
    } catch (Exception e) {
        return null;
    }
}

大体上是这样

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com