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

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice