我正在尝试创建一个暴力应用程序,它接受一个简单的MD5哈希的输入,并且用户最初指定密码的长度。从那里开始,我使用了一个涵盖所有可能性的课程。所以例如..
MD5中的“密码”一词将变为5f4dcc3b5aa765d61d8327deb882cf99
。程序将从aaaaaaaa
开始,然后迭代到aaaaaaab
,依此类推,并将转换为MD5并与用户输入进行比较。
我遇到的问题是如何使用用户指定的字符长度创建一个字符串,通过字母表中的所有字母进行迭代。本能地我尝试了这个:
public String calculateHash() throws InterruptedException
{
//pass is length 1
if(length > 0)
{
for(int i=0; i < 25; i++)
{
//pass is length 2
if(length > 1)
{
for(int x=0; x < alphabet.length; x++)
{
if(length > 2)
{
for(int y=0; y < alphabet.length; y++)
{
if(length > 3)
{
for(int z=0; z < alphabet.length; z++)
{
if(length > 4)
{
for(int v=0; v < alphabet.length; v++)
{
if(length > 5)
{
for(int f=0; f < alphabet.length; f++)
{
if(length >= 6)
{
for(int g=0; g < alphabet.length; g++)
{
//character would be added to the end of the string.
迭代完成后,完成的字符串将被发送到方法以对其进行散列并返回。但必须有一种更有效的方法来解决这个问题。