【问题标题】:Generate numbers as part of a brute force application生成数字作为蛮力应用程序的一部分
【发布时间】:2014-11-07 18:24:45
【问题描述】:

首先请注意,我了解 Java。我进行了一个暴力破解应用程序,我知道密码中有两个数字要破解。

当我生成一个像ABC这样的字符串时,我需要在这个字符串的所有可能的位置放置两个数字(我已经做到了!)

我需要两个分别从 0 到 9 生成的数字。这包括两个数字放在一起时从 00 到 99 的可能性。

我已经考虑了很多,并认为让一个整数递增然后我可以分成两个整数反馈给我的主数可能是一个更好的主意,但是我实际上不能从 00 开始一个整数, 01, 02, 03.. 其中第一个位置是 fNum 和第二个 sNum。 1、2、3、4 到 10 点。

到目前为止,我已经提出了以下解决方案,但它也没有像我想要的那样工作..

public int twoNumber(int fNum, int sNum){

    //form array from two integers
    int[] intArray = {fNum, sNum};

    //increment the array value (not sure if correct way?)
    intArray++;        

    //split the array to get two indiivudla numbers
    int[] part1 = new int[99];
    int[] part2 = new int[99];

    System.arraycopy(intArray, 0, part1, 0, part1.length);
    System.arraycopy(intArray, part1.length, part2, 0, part2.length);

    //I need to convert the two above and return the two numbers as integers
    //and not arrays

}

我不是 100% 确定这是执行此操作的最佳方法,但程序应返回如下内容:

假设我们从暴力中的 A 开始。

0A0
0A1
0A3
..
0A9
1A0
..
9A9
..
0AB0
0AB1
0AB2
0AB3

等等。

我的问题是,解决这个问题的最佳方法是形成一个数组、递增、拆分和返回吗?我还考虑过其他方法,例如创建所有可能数字的数组(花费太长时间)、在 java 中使用随机数、创建单个整数、递增、拆分和返回。

【问题讨论】:

    标签: java arrays integer helpers


    【解决方案1】:

    这听起来像是“家庭作业”或“项目”,所以这里的建议将是关于您将使用的算法和一些将事情放在一起的方法,而不是一个工作程序来做到这一点。

    首先,算法。看起来您需要从所有可能的位置组合中具有两个整数的基本字符串生成试用密码。因此,您需要一种算法来循环遍历字符串中“添加的整数”位置的所有可能组合......并且对于这些组合中的每一个,遍历整数值的 100 个组合。

    在伪代码中,假设您有位置 localocb,您可能会执行以下操作:

    for num1=0 to 9
         for num2=0 to 9
          form candidate password by inserting num1 in loca and num2 in locb
         end for
       end for
    

    您可能希望通过将三个字符串放在前面(最多为loca -1)、中间(从localocb 的字符)和后面(从locb 到结束的字符)并替换为

    候选人 = 前 + num1 + 中 + num2 + 后

    【讨论】:

    • 作为练习,我留下了如何处理所有位置对
    • 嗨,这不是家庭作业或项目...我想看看使用具有数字和字母的生成器与文本生成器进行暴力破解然后在所有可能的位置添加两个数字之间的区别...我已经这样做了,我现在需要一种生成两个数字的方法,仅此而已。非常简单,但我一直在努力尝试做到这一点。
    • 你被困在生成这两个数字上?!使用像伪代码这样的 for 循环
    • 我知道这是一项简单的任务。不过这很困难,因为这些数字需要被视为一个可能从 00 到 99 的总数字。我需要一种生成这个数字然后拆分它的方法,但是当我发现数字不能从 01 开始时,它将是1 ...因此我对数组的最终想法,将两个数字放入,增加数组的值,然后拆分并返回值。但我不知道这是否是最好的方法,甚至不能让它工作,因为返回值需要是整数而不是 int[]。
    • 看伪代码..不用生成两位数,单独使用数字
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多