Showing posts with label code. Show all posts
Showing posts with label code. Show all posts

Saturday, March 12, 2011

Crypto codes: GGH public key cryptosystem

Download code from here
I only did the decryption part, using Babai's algorithm (for homework :D)

Friday, March 11, 2011

Crypto codes: Elliptic ElGamal

Download code from here

Crypto codes:Miller Rabin Primality test

Download code from here

Output: (exercise 3.14 in the Introduction of Mathematical Cryptography)
1105 is composite with witness 2
294409 is composite with witness 2
118901509 is prime
118901521 is composite with witness 2
118901527 is prime
118915387 is composite with witness 2

Friday, February 25, 2011

Crypto codes: Pollard’s p − 1 factorization algorithm

Code here
It uses prime factor code from square root

Output shows the steps of the algorithm with results:
Find prime factors of 48356747:
2^19! -1 = 13944673 (mod 48356747)
gcd(2^19!-1,48356747) = 6917
factors of 48356747, p=6917, and q=48356747/6917=6991
The prime factorization of 6916 is: 2, 2, 7, 13, 19

The prime factorization of 6990 is: 2, 3, 5, 233

Sunday, February 13, 2011

Monday, February 07, 2011

Crypto codes (3)

Download from here
For the inverse and fast squaring code, see Crypto codes: 1

Finds eth root modulo p:

public class RSA {

 //find x from x^e = c (mod p)
  public static long findRoot(long e, long c, long p)
  {
   long x = 0;
   
   //find e^-1 (mod p-1)
   long eInverse = crypto.inverse(p-1, e);
   
   //x = c^d (mod p)
   x = crypto.fastSq(p, c, eInverse);
   
   return x;
  }
       //test: answer = 6059
  public static void main(String[] args) {
   
      long e = 1583;
      long c = 4714;
      long p = 7919;
      
   long x = RSA.findRoot(e,c, p);
   System.out.println("Solution to x^"+e+" = "+c+" (mod "+p+"): x= "+x);
  }

}

This test will return:
Solution to x^1583 = 4714 (mod 7919): x= 6059

Matlab codes: http://www-users.math.umd.edu/~lcw/MatlabCode/

Wednesday, February 02, 2011

Crypto codes: Chinese remainder theorem

For gcd and inverse code, see Crypto codes

Java implementation of Chinese remainder theorem, download from here
Matlab code here

For this particular example, output will look like the following:

Step:0->x=2+3*5=17
Step:1->x=17+21*7=164
Solution:164

Sunday, January 23, 2011

Crypto codes: ElGamal public key cryptosystem

Algorithms from An Introduction to Mathematical Cryptography book.
Here, Bob sends an encrypted message to Alice using ElGamal public key cryptosystem.
Download code from here

Extended Euclidean algorithm
Matlab code for modular inverse:
[u,y,d] = gcd(x,p); 
y = mod(y,p);

Thursday, January 10, 2008

Regular expression in java

http://java.sun.com/developer/technicalArticles/releases/1.4regex/

String input = "something";

1. write a regular expression
String regex="your_reg_ex"; 


2. create a pattern object compiling your regex


Pattern p = Pattern.compile(regex);


3. create a matcher object that will match input string with the compiled regex

Matcher m = p.matcher(input);


4. check whether any matching found

if (m.find())
{
//5. if found, the matched portion will be available at m.group()
String found = m.group();
// do whatever u like
 }

let, input = "fjkl;pokjhA123ss456Apghkit"
u want to read block between 2 A's
regex = (?<=X).*?(?=X) where X = "A" here output = "123ss456" u can only use fixed length string in (?<=X), never use .*? or + in X otherwise u'll get exception
Look-behind group does not have an obvious maximum length near index ..



Java code for this:
 1 
 2   String regularExp = "(?<=A).*?(?=A)";

 3 
 4   String input = "fjkl;pokjhA123ss456Apghkit";
 5 

 6   Pattern pattern = Pattern.compile(regularExp);

 7   
 8   Matcher matcher =  pattern.matcher(input);

 9      
10      if(matcher.find())
11         {

12         String parsedData = matcher.group();
13                 System.out.println(" Output ->"+parsedData);

14          }
15