Ultra Frosty Posted October 16, 2004 Share Posted October 16, 2004 Okay. I am making a small app that uses TEA encryption, but I can't figure out why I am getting the build errors: The name 'FormatKey' does not exist in the current context. Line 65. The name 'FormatKey' does not exist in the current context. Line 86. The code. I am still in the debugging stages, but I can't figure this out. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Windows.Forms; using System.Text; namespace NeoTEA { partial class Form1 : Form { public Form1() { InitializeComponent(); } private void buttonEnc_Click(object sender, EventArgs e) { Encrypt(textBoxEncTxt.Text, textBoxEncKey.Text); } private string ConvertUIntToString(uint Input) { System.Text.StringBuilder output = new System.Text.StringBuilder(); output.Append((char)((Input & 0xFF))); output.Append((char)((Input >> 8) & 0xFF)); output.Append((char)((Input >> 16) & 0xFF)); output.Append((char)((Input >> 24) & 0xFF)); return output.ToString(); } private uint ConvertStringToUInt(string Input) { uint output; output = ((uint)Input[0]); output += ((uint)Input[1] << 8); output += ((uint)Input[2] << 16); output += ((uint)Input[3] << 24); return output; } private void code(uint[] v, uint[] k) { uint y = v[0]; uint z = v[1]; uint sum = 0; uint delta = 0x9e3779b9; uint n = 32; while (n-- > 0) { y += (z << 4 ^ z >> 5) + z ^ sum + k[sum & 3]; sum += delta; z += (y << 4 ^ y >> 5) + y ^ sum + k[sum >> 11 & 3]; } v[0] = y; v[1] = z; } private void decode(uint[] v, uint[] k) { uint n = 32; uint sum; uint y = v[0]; uint z = v[1]; uint delta = 0x9e3779b9; sum = delta << 5; while (n-- > 0) { z -= (y << 4 ^ y >> 5) + y ^ sum + k[sum >> 11 & 3]; sum -= delta; y -= (z << 4 ^ z >> 5) + z ^ sum + k[sum & 3]; } v[0] = y; v[1] = z; } public string Encrypt(string Data, string Key) { uint[] formattedKey = FormatKey(Key); if (Data.Length % 2 != 0) Data += '\0'; // Make sure array is even in length. byte[] dataBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(Data); string cipher = string.Empty; uint[] tempData = new uint[2]; for (int i = 0; i < dataBytes.Length; i += 2) { tempData[0] = dataBytes[i]; tempData[1] = dataBytes[i + 1]; code(tempData, formattedKey); cipher += ConvertUIntToString(tempData[0]) + ConvertUIntToString(tempData[1]); } return cipher; } public string Decrypt(string Data, string Key) { uint[] formattedKey = FormatKey(Key); int x = 0; uint[] tempData = new uint[2]; byte[] dataBytes = new byte[Data.Length / 8 * 2]; for (int i = 0; i < Data.Length; i += 8) { tempData[0] = ConvertStringToUInt(Data.Substring(i, 4)); tempData[1] = ConvertStringToUInt(Data.Substring(i + 4, 4)); decode(tempData, formattedKey); dataBytes[x++] = (byte)tempData[0]; dataBytes[x++] = (byte)tempData[1]; } string decipheredString = System.Text.ASCIIEncoding.ASCII.GetString(dataBytes, 0, dataBytes.Length); // Strip the null char if it was added. if (decipheredString[decipheredString.Length - 1] == '\0') decipheredString = decipheredString.Substring(0, decipheredString.Length - 1); return decipheredString; } } } Link to comment Share on other sites More sharing options...
0 MrRogers Posted October 16, 2004 Share Posted October 16, 2004 Could it be that 'FormatKey' doesn't exist? I doesn't exist in the code snipet you've included Link to comment Share on other sites More sharing options...
0 Ultra Frosty Posted October 16, 2004 Author Share Posted October 16, 2004 hmm. looks like ill have to write something in C++ and port it to .NET.... Link to comment Share on other sites More sharing options...
0 Ka-Bar Posted October 16, 2004 Share Posted October 16, 2004 MrRogers is right. You are calling the undefined method FormatKey. Seems you are missing a method. Link to comment Share on other sites More sharing options...
Question
Ultra Frosty
Okay. I am making a small app that uses TEA encryption, but I can't figure out why I am getting the build errors:
The code. I am still in the debugging stages, but I can't figure this out.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Windows.Forms; using System.Text; namespace NeoTEA { partial class Form1 : Form { public Form1() { InitializeComponent(); } private void buttonEnc_Click(object sender, EventArgs e) { Encrypt(textBoxEncTxt.Text, textBoxEncKey.Text); } private string ConvertUIntToString(uint Input) { System.Text.StringBuilder output = new System.Text.StringBuilder(); output.Append((char)((Input & 0xFF))); output.Append((char)((Input >> 8) & 0xFF)); output.Append((char)((Input >> 16) & 0xFF)); output.Append((char)((Input >> 24) & 0xFF)); return output.ToString(); } private uint ConvertStringToUInt(string Input) { uint output; output = ((uint)Input[0]); output += ((uint)Input[1] << 8); output += ((uint)Input[2] << 16); output += ((uint)Input[3] << 24); return output; } private void code(uint[] v, uint[] k) { uint y = v[0]; uint z = v[1]; uint sum = 0; uint delta = 0x9e3779b9; uint n = 32; while (n-- > 0) { y += (z << 4 ^ z >> 5) + z ^ sum + k[sum & 3]; sum += delta; z += (y << 4 ^ y >> 5) + y ^ sum + k[sum >> 11 & 3]; } v[0] = y; v[1] = z; } private void decode(uint[] v, uint[] k) { uint n = 32; uint sum; uint y = v[0]; uint z = v[1]; uint delta = 0x9e3779b9; sum = delta << 5; while (n-- > 0) { z -= (y << 4 ^ y >> 5) + y ^ sum + k[sum >> 11 & 3]; sum -= delta; y -= (z << 4 ^ z >> 5) + z ^ sum + k[sum & 3]; } v[0] = y; v[1] = z; } public string Encrypt(string Data, string Key) { uint[] formattedKey = FormatKey(Key); if (Data.Length % 2 != 0) Data += '\0'; // Make sure array is even in length. byte[] dataBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(Data); string cipher = string.Empty; uint[] tempData = new uint[2]; for (int i = 0; i < dataBytes.Length; i += 2) { tempData[0] = dataBytes[i]; tempData[1] = dataBytes[i + 1]; code(tempData, formattedKey); cipher += ConvertUIntToString(tempData[0]) + ConvertUIntToString(tempData[1]); } return cipher; } public string Decrypt(string Data, string Key) { uint[] formattedKey = FormatKey(Key); int x = 0; uint[] tempData = new uint[2]; byte[] dataBytes = new byte[Data.Length / 8 * 2]; for (int i = 0; i < Data.Length; i += 8) { tempData[0] = ConvertStringToUInt(Data.Substring(i, 4)); tempData[1] = ConvertStringToUInt(Data.Substring(i + 4, 4)); decode(tempData, formattedKey); dataBytes[x++] = (byte)tempData[0]; dataBytes[x++] = (byte)tempData[1]; } string decipheredString = System.Text.ASCIIEncoding.ASCII.GetString(dataBytes, 0, dataBytes.Length); // Strip the null char if it was added. if (decipheredString[decipheredString.Length - 1] == '\0') decipheredString = decipheredString.Substring(0, decipheredString.Length - 1); return decipheredString; } } }Link to comment
Share on other sites
3 answers to this question
Recommended Posts