Prime Factoring

Submitted by Anonymous on Tue, 08/06/2019 - 05:57

I'm dumping my research on prime factoring of RSA numbers from 2003.

In short, it is reverse multiplication.

https://penguin-systems.com/reports/Prime Factoring - de4dc0de.pdf

-- UPDATE --

Code pulled from the archives.


import java.util.*;
public class crack
{
    public static void main(String[] args)
    {
        String number = "45113";
        int num1, num2, check, source=0;
        int i,n, digit, run, m,j, x,y, count, c;
        int shift, num3, num4, multi;
        int move, temp, len;
        // the prime factors are 229, 197
        
        
        // possible number arrays
        
                
        int[][][] set = new int[193][10][2];
        int[][][] test = new int[193][10][1];
        
        move =0;
        n=0;
        digit = number.length();
        len = digit-1;
        // setup number array
        for(i=0; i<=len; i++)
        {
            for(m=0; m<=9; m++)
            {
            
            
                set[i][m][0]=0;
                set[i][m][1]=0;
                test[i][m][0]=0;
            }
                
            
        }
        for(i=0; i<=len; i++)
        {
            System.out.println(i);
            for(m=0; m<=9; m++)
            {
                System.out.println(set[i][m][n]+" , "+set[i][m][n+1]);
                System.out.println("test array "+test[i][m][0]);
            }
            System.out.println(" ");
        }
        //convert string number to integer
        x=0;
        y=0;
        num1=0;
        shift = 0;
        num2=0;
        multi = set[0][x][y]*set[0][x][y+1];
        num4 = (0*set[0][x][y])+(0*set[0][x][y+1])+shift;
        shift = (((num4-source)/10)+(multi))/10;
        
        num3 = multi-(shift*10);
        try
        {        
            source = Integer.parseInt(number.substring(digit-1, digit));
        }
        catch    (NumberFormatException e)
        {
            System.out.println("bad number");
        }
        System.out.println("source "+source+"\n");
        
        if(shift>source)
        {
            num1 = (10+source)-shift;
        }
        else
        {
            num1=source-shift;
        }
        
        // find possible numbers in one's position
        m=0;
        j=0;
        count = 0;
        for(i = 0; i<=9; i++)
        {
            for(n=0; n<=9; n++)
            {
                check = i*n;
                // compare number in one's position with possible numbers
                run=check-num1;
                
            // if possible number checks good
            // put numbers in array set0    
                if (run%10 == 0)
                {
                    set[count][m][j]=i;
                    set[count][m][j+1]=n;
                    test[count][m][0]=1;
                    m++;
                }
                
            }
        }
        // show possible numbers in One's position
        
        for(m=0; m<=9; m++)
        {
            System.out.println(set[0][m][j]+","+set[0][m][j+1]);
        }
        x=0;
        y=0;
        num1=0;
        num2=0;
                
        //set2
            count++;
            multi = set[count-1][x][y]*set[count-1][x][y+1];
            num4 = (set[count][0][0]*set[0][x][y])+(set[count][0][1]*set[0][x][y+1])+shift;
            shift = (((num4-source)/10)+(multi))/10;
            System.out.println(count+",num4 "+num4);
            if(num4==shift)
            {
                num3=shift;
            }
            else{
            num3 = (((num4-source)/10)+(multi))-(shift*10);
            }
            System.out.println("\nshift "+shift);
            System.out.println("num3 "+num3);
        
            digit--;
            try
            {        
                source = Integer.parseInt(number.substring(digit-1, digit));
            }
            catch    (NumberFormatException e)
            {
                System.out.println("bad number");
            }
            System.out.println("source "+source);
        
            if(num3>source)
            {
                num1 = (10+source)-num3;
            }
            else
            {
                num1=source-num3;
            }
            System.out.println("num1 "+num1+"\n");
            m=0;
            j=0;
        
            for(i=0; i<=9; i++)
            {
                for(n=0; n<=9; n++)
                {
                    check=(set[0][x][y]*i)+(set[0][x][y+1]*n);
                    run = check-num1;
                
                    if(run%10==0)
                    {
                        set[count][m][j]=i;
                        set[count][m][j+1]=n;
                        test[count][m][0]=1;
                        m++;
                    }
                }
            }
        
        // start while            
        while(count<len){
            count++;
            shift = num3;
            multi = set[count-1][0][0]*set[count-1][0][1];
            num4 = (set[count-1][0][0]*set[0][x][y])+(set[count-1][0][1]*set[0][x][y+1])+shift;
            shift = (((num4-source)/10)+(multi))/10;
            
            System.out.println(count+",num4 "+num4);
            if(num4==shift)
            {
                num3=shift;
            }
            else
            {
            num3 = (((num4-source)/10)+(multi))-(shift*10);
            }
            System.out.println("\nshift "+shift+"\nnum3 "+num3);
            
            digit--;
            try
            {        
                source = Integer.parseInt(number.substring(digit-1, digit));
            }
            catch    (NumberFormatException e)
            {
                System.out.println("bad number");
            }
            System.out.println("source "+source);
        
            if(num3>source)
            {
                num1 = (10+source)-num3;
            }
            else
            {
                num1=source-num3;
            }
            System.out.println("num1 "+num1+"\n");
            m=0;
            j=0;
        
            for(i=0; i<=9; i++)
            {
                for(n=0; n<=9; n++)
                {
                    check=(set[0][x][y]*i)+(set[0][x][y+1]*n);
                    run = check-num1;
                
                    if(run%10==0)
                    {
                        set[count][m][j]=i;
                        set[count][m][j+1]=n;
                        test[count][m][0]=1;
                        m++;
                    }
                }
            }
            move=num3;
            }//end while
                    
            
        // print out possible numbers for Ten's place
        for(m=0; m<=9; m++)
        {
            System.out.println(set[1][m][j]+","+set[1][m][j+1]);
        }
        System.out.println("\n");
        for(m=0; m<=9; m++)
        {
            System.out.println(set[2][m][j]+","+set[2][m][j+1]);
        }        
        
        System.out.println("\n");
        for(m=0; m<=9; m++)
        {
            System.out.println(set[3][m][j]+","+set[3][m][j+1]);
        }    
        
        System.out.println("\n");
        for(m=0; m<=9; m++)
        {
            System.out.println(set[4][m][j]+","+set[4][m][j+1]);
        }             
    
    // start check sequence
    
        int p, o, d, l, r, h, z, q;
        int[] array=new int[5];
        int num23, shift1, yowa;
        z=len;
        d=0;
        l=0;
        r=1;
        shift1 = 0;
        yowa = Integer.parseInt(number.substring(0, 1));
        System.out.println(yowa);
        
        // while loop
        for(p=0; p<=len; p++)
        {
            for(o=0; o<=len; o++)
            {
                num23=set[o][d][l]*set[p][d][r];
                h=z-o;
                if(h>=0)
                {
                    array[h]=array[h]+num23;
                }
                l=1;
            }
            r=0;
            z--;
        }
        for(q=4; q>=1; q--)
        {
            shift1=array[q]/10;
            array[q]=array[q]-(shift1*10);
            array[q-1]=array[q-1]+shift1;
        }
        // if statement to start re-iterative checking
        //go back and generate numbers to replace the bad one's
        
        
        //end while loop
        
        for(q=0; q<=4; q++)
        {
            System.out.print(array[q]);
            
        }
    
        if(array[0] != yowa)
        {
            System.out.println("\n"+yowa+" , "+array[0]+" do not match");
        }
    }
}