1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Help in code to crack a symantic key for a TEA algorithm

Discussion in 'C' started by elsa87, Oct 10, 2008.

  1. elsa87

    elsa87 New Member

    Joined:
    Oct 10, 2008
    Messages:
    21
    Likes Received:
    0
    Trophy Points:
    0
    hi everyone..i need to crack a symmetric key by implementing a method called CrackSymmetricKey
    I must use the TEA encryption algorithm below:
    Code:
    union myMsgType{
    		unsigned long textConverted[2];
    		char text[9];
    };
    
    class TEA_Algorithm  
    {
    public:
    	void CrackSymmetricKey(union myMsgType plaintext, union myMsgType ciphertext);
    	void Decrypt(unsigned long k[], unsigned long ciphertext[], unsigned long plaintext[]);
    	void Encrypt(unsigned long k[], unsigned long plaintext[], unsigned long ciphertext[]);
    	TEA_Algorithm() {};
    	virtual ~TEA_Algorithm() {};
    
    };
    
    
    As input, im given the following ciphertext and i need to find the secret key that has been used to obtain this ciphertext, and hence, deduce the original plaintext.
    // myCiphertext.textConverted[0] = 2022673309;
    // myCiphertext.textConverted[1] = 3810199360;

    Code:
    #include "stdafx.h" 
    #include <iostream>
    #include <string.h>
    using namespace std;
    
    #include "TEA_Algorithm.h"
    
    void TEA_Algorithm::Encrypt(unsigned long k[], unsigned long plaintext[], unsigned long ciphertext[])
    {
    unsigned long y = plaintext[0], z = plaintext[1];
    	unsigned long delta = 0x9e3779b9, sum = 0; int n;
    	for (n= 0; n < 32; n++) {
    		sum += delta;
    		y += ((z << 4) + k[0]) ^ (z+sum) ^ ((z >> 5) + k[1]);        
    		z += ((y << 4) + k[2]) ^ (y+sum) ^ ((y >> 5) + k[3]);        
    	}
    	ciphertext[0] = y;  ciphertext[1] = z; 
    
    }
    
    void TEA_Algorithm::Decrypt(unsigned long k[], unsigned long ciphertext[], unsigned long plaintext[])
    {
    unsigned long y = ciphertext[0], z = ciphertext[1];
    	unsigned long delta = 0x9e3779b9, sum = delta << 5;  int n;
    	for (n= 0; n < 32; n++) {
    		z -= ((y << 4) + k[2]) ^ (y + sum) ^ ((y >> 5) + k[3]);
    		y -= ((z << 4) + k[0]) ^ (z + sum) ^ ((z >> 5) + k[1]);
    		sum -= delta;
    	}
    	plaintext[0] = y; plaintext[1] = z;
    }
    
    void TEA_Algorithm::CrackSymmetricKey(union myMsgType plaintext, union myMsgType ciphertext)
    {
    /* 
     what should i write here if this is what's given:
    	plaintext:= security
    	ciphertext: 	
    		myCiphertext.textConverted[0] = 2022673309;
    		myCiphertext.textConverted[1] = 3810199360;
    
    	additional information: key[0]=key[1]=k[2]=k[3]
     and you're asked to determine what is the secret key that 
     has been used to encrypt this plaintext.
    */
    
    }
    
    
    plz help..i know i should make a loop inside but im very weak in programming
     

Share This Page