473,569 Members | 2,604 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Encryption doesn't work right

I'm trying to write an encryption program, and it doesn't produce the
right output; "GOOGLE" encrypted w/"GOOGLE" IS NOT "ee".
Here's the code:

namespace
{
const char vTable[26][27]=
{
{'Q','W','E','R ','T','Y','U',' I','O','P','A', 'S','D','F','G' ,'H','J','K','L ','Z','X','C',' V','B','N','M'} ,
{'W','E','R','T ','Y','U','I',' O','P','A','S', 'D','F','G','H' ,'J','K','L','Z ','X','C','V',' B','N','M','Q'} ,
{'E','R','T','Y ','U','I','O',' P','A','S','D', 'F','G','H','J' ,'K','L','Z','X ','C','V','B',' N','M','Q','W'} ,
{'R','T','Y','U ','I','O','P',' A','S','D','F', 'G','H','J','K' ,'L','Z','X','C ','V','B','N',' M','Q','W','E'} ,
{'T','Y','U','I ','O','P','A',' S','D','F','G', 'H','J','K','L' ,'Z','X','C','V ','B','N','M',' Q','W','E','R'} ,
{'Y','U','I','O ','P','A','S',' D','F','G','H', 'J','K','L','Z' ,'X','C','V','B ','N','M','Q',' W','E','R','T'} ,
{'U','I','O','P ','A','S','D',' F','G','H','J', 'K','L','Z','X' ,'C','V','B','N ','M','Q','W',' E','R','T','Y'} ,
{'I','O','P','A ','S','D','F',' G','H','J','K', 'L','Z','X','C' ,'V','B','N','M ','Q','W','E',' R','T','Y','U'} ,
{'O','P','A','S ','D','F','G',' H','J','K','L', 'Z','X','C','V' ,'B','N','M','Q ','W','E','R',' T','Y','U','I'} ,
{'P','A','S','D ','F','G','H',' J','K','L','Z', 'X','C','V','B' ,'N','M','Q','W ','E','R','T',' Y','U','I','O'} ,
{'A','S','D','F ','G','H','J',' K','L','Z','X', 'C','V','B','N' ,'M','Q','W','E ','R','T','Y',' U','I','O','P'} ,
{'S','D','F','G ','H','J','K',' L','Z','X','C', 'V','B','N','M' ,'Q','W','E','R ','T','Y','U',' I','O','P','A'} ,
{'D','F','G','H ','J','K','L',' Z','X','C','V', 'B','N','M','Q' ,'W','E','R','T ','Y','U','I',' O','P','A','S'} ,
{'F','G','H','J ','K','L','Z',' X','C','V','B', 'N','M','Q','W' ,'E','R','T','Y ','U','I','O',' P','A','S','D'} ,
{'G','H','J','K ','L','Z','X',' C','V','B','N', 'M','Q','W','E' ,'R','T','Y','U ','I','O','P',' A','S','D','F'} ,
{'H','J','K','L ','Z','X','C',' V','B','N','M', 'Q','W','E','R' ,'T','Y','U','I ','O','P','A',' S','D','F','G'} ,
{'J','K','L','Z ','X','C','V',' B','N','M','Q', 'W','E','R','T' ,'Y','U','I','O ','P','A','S',' D','F','G','H'} ,
{'K','L','Z','X ','C','V','B',' N','M','Q','W', 'E','R','T','Y' ,'U','I','O','P ','A','S','D',' F','G','H','J'} ,
{'L','Z','X','C ','V','B','N',' M','Q','W','E', 'R','T','Y','U' ,'I','O','P','A ','S','D','F',' G','H','J','K'} ,
{'Z','X','C','V ','B','N','M',' Q','W','E','R', 'T','Y','U','I' ,'O','P','A','S ','D','F','G',' H','J','K','L'} ,
{'X','C','V','B ','N','M','Q',' W','E','R','T', 'Y','U','I','O' ,'P','A','S','D ','F','G','H',' J','K','L','Z'} ,
{'C','V','B','N ','M','Q','W',' E','R','T','Y', 'U','I','O','P' ,'A','S','D','F ','G','H','J',' K','L','Z','X'} ,
{'V','B','N','M ','Q','W','E',' R','T','Y','U', 'I','O','P','A' ,'S','D','F','G ','H','J','K',' L','Z','X','C'} ,
{'B','N','M','Q ','W','E','R',' T','Y','U','I', 'O','P','A','S' ,'D','F','G','H ','J','K','L',' Z','X','C','V'} ,
{'N','M','Q','W ','E','R','T',' Y','U','I','O', 'P','A','S','D' ,'F','G','H','J ','K','L','Z',' X','C','V','B'} ,
{'M','Q','W','E ','R','T','Y',' U','I','O','P', 'A','S','D','F' ,'G','H','J','K ','L','Z','X',' C','V','B','N'} ,
};

void convert(string& String)
{
for(int i=0;i<String.le ngth();i++)
String[i]=(toupper(Strin g[i]));
}

string encrypt(const string& cleartext,const string& key)
{
string encrypted;
for(int i=0;i<cleartext .length();i++)
encrypted+=vTab le[cleartext[i]-'A'][key[i%key.length()]-'A'];
return encrypted;
}

string decrypt(const string& ciphertext,cons t string& key)
{
string decrypted;
for(int i=0;i<ciphertex t.length();i++)
decrypted+=vTab le[key[i%key.length()]-'A'][ciphertext[i]-'A'];
return decrypted;
}
}

int main()
{
try
{
string cleartext;
string key;
cout << "Enter cleartext: ";
getline(cin,cle artext,'\n');
cout << "Enter key: ";
getline(cin,key ,'\n');
convert(clearte xt);
convert(key);
encrypt(clearte xt,key);
cout << "Ciphertext : " << encrypt(clearte xt,key)<< endl;
system("PAUSE") ;
return EXIT_SUCCESS;
}
catch(std::exce ption const& x)
{
std::cerr << "!" << x.what() << std::endl;
return EXIT_FAILURE;
}
}

Any idea as what might be wrong? Thanks!!!

Oct 2 '05 #1
6 1227
"Protoman" <Pr**********@g mail.com> wrote in message
news:11******** *************@g 49g2000cwa.goog legroups.com...
I'm trying to write an encryption program, and it doesn't produce the
right output; "GOOGLE" encrypted w/"GOOGLE" IS NOT "ee".
Here's the code: .... Any idea as what might be wrong? Thanks!!!

The algorithm you have chosen.

Seriously, what are you trying to implement?
Why do you believe that "GOOGLE" encrypted with "GOOGLE"
is supposed to be "ee" ?

Try an encryption-related newsgroup to first discuss the
algorithm you are trying to implement. Once and if you
narrow-down the issue to a C++ problem, you may want to
come back here and ask a more specific question.
Ivan
--
http://ivan.vecerina.com/contact/?subject=NG_POST <- email contact form
Brainbench MVP for C++ <> http://www.brainbench.com

Oct 2 '05 #2
Protoman wrote:
I'm trying to write an encryption program, and it doesn't produce the
right output; "GOOGLE" encrypted w/"GOOGLE" IS NOT "ee".
Here's the code:

namespace
{
const char vTable[26][27]=
{
{'Q','W','E','R ','T','Y','U',' I','O','P','A', 'S','D','F','G' ,'H','J','K','L ','Z','X','C',' V','B','N','M'} ,
{'W','E','R','T ','Y','U','I',' O','P','A','S', 'D','F','G','H' ,'J','K','L','Z ','X','C','V',' B','N','M','Q'} ,
{'E','R','T','Y ','U','I','O',' P','A','S','D', 'F','G','H','J' ,'K','L','Z','X ','C','V','B',' N','M','Q','W'} ,
{'R','T','Y','U ','I','O','P',' A','S','D','F', 'G','H','J','K' ,'L','Z','X','C ','V','B','N',' M','Q','W','E'} ,
{'T','Y','U','I ','O','P','A',' S','D','F','G', 'H','J','K','L' ,'Z','X','C','V ','B','N','M',' Q','W','E','R'} ,
{'Y','U','I','O ','P','A','S',' D','F','G','H', 'J','K','L','Z' ,'X','C','V','B ','N','M','Q',' W','E','R','T'} ,
{'U','I','O','P ','A','S','D',' F','G','H','J', 'K','L','Z','X' ,'C','V','B','N ','M','Q','W',' E','R','T','Y'} ,
{'I','O','P','A ','S','D','F',' G','H','J','K', 'L','Z','X','C' ,'V','B','N','M ','Q','W','E',' R','T','Y','U'} ,
{'O','P','A','S ','D','F','G',' H','J','K','L', 'Z','X','C','V' ,'B','N','M','Q ','W','E','R',' T','Y','U','I'} ,
{'P','A','S','D ','F','G','H',' J','K','L','Z', 'X','C','V','B' ,'N','M','Q','W ','E','R','T',' Y','U','I','O'} ,
{'A','S','D','F ','G','H','J',' K','L','Z','X', 'C','V','B','N' ,'M','Q','W','E ','R','T','Y',' U','I','O','P'} ,
{'S','D','F','G ','H','J','K',' L','Z','X','C', 'V','B','N','M' ,'Q','W','E','R ','T','Y','U',' I','O','P','A'} ,
{'D','F','G','H ','J','K','L',' Z','X','C','V', 'B','N','M','Q' ,'W','E','R','T ','Y','U','I',' O','P','A','S'} ,
{'F','G','H','J ','K','L','Z',' X','C','V','B', 'N','M','Q','W' ,'E','R','T','Y ','U','I','O',' P','A','S','D'} ,
{'G','H','J','K ','L','Z','X',' C','V','B','N', 'M','Q','W','E' ,'R','T','Y','U ','I','O','P',' A','S','D','F'} ,
{'H','J','K','L ','Z','X','C',' V','B','N','M', 'Q','W','E','R' ,'T','Y','U','I ','O','P','A',' S','D','F','G'} ,
{'J','K','L','Z ','X','C','V',' B','N','M','Q', 'W','E','R','T' ,'Y','U','I','O ','P','A','S',' D','F','G','H'} ,
{'K','L','Z','X ','C','V','B',' N','M','Q','W', 'E','R','T','Y' ,'U','I','O','P ','A','S','D',' F','G','H','J'} ,
{'L','Z','X','C ','V','B','N',' M','Q','W','E', 'R','T','Y','U' ,'I','O','P','A ','S','D','F',' G','H','J','K'} ,
{'Z','X','C','V ','B','N','M',' Q','W','E','R', 'T','Y','U','I' ,'O','P','A','S ','D','F','G',' H','J','K','L'} ,
{'X','C','V','B ','N','M','Q',' W','E','R','T', 'Y','U','I','O' ,'P','A','S','D ','F','G','H',' J','K','L','Z'} ,
{'C','V','B','N ','M','Q','W',' E','R','T','Y', 'U','I','O','P' ,'A','S','D','F ','G','H','J',' K','L','Z','X'} ,
{'V','B','N','M ','Q','W','E',' R','T','Y','U', 'I','O','P','A' ,'S','D','F','G ','H','J','K',' L','Z','X','C'} ,
{'B','N','M','Q ','W','E','R',' T','Y','U','I', 'O','P','A','S' ,'D','F','G','H ','J','K','L',' Z','X','C','V'} ,
{'N','M','Q','W ','E','R','T',' Y','U','I','O', 'P','A','S','D' ,'F','G','H','J ','K','L','Z',' X','C','V','B'} ,
{'M','Q','W','E ','R','T','Y',' U','I','O','P', 'A','S','D','F' ,'G','H','J','K ','L','Z','X',' C','V','B','N'} ,
};
....> Any idea as what might be wrong? Thanks!!!


The problem here is that the table for this Vigenere cipher program no
longer has the nice symmetric layout that allowed for relatively easy
decryption. With this table, the program should now search for the
encoded character along the key's axis. The offset where it is found
will be equivalent to the unencrypted letter:

string decrypt(const string& ciphertext, const string& key)
{
string decrypted;

for (int i=0; i < ciphertext.leng th();i++)
for (char j = 0; j < 27; j++)
{
// search for encoded char along axis of key char
if (vTable[j] [key[ i % key.length()]-'A']
== ciphertext[i])
{
decrypted += char(j+'A');
break;
}
}
return decrypted;
}

Greg

Oct 2 '05 #3

Greg wrote:
Protoman wrote:
I'm trying to write an encryption program, and it doesn't produce the
right output; "GOOGLE" encrypted w/"GOOGLE" IS NOT "ee".
Here's the code:

namespace
{
const char vTable[26][27]=
{
{'Q','W','E','R ','T','Y','U',' I','O','P','A', 'S','D','F','G' ,'H','J','K','L ','Z','X','C',' V','B','N','M'} ,
{'W','E','R','T ','Y','U','I',' O','P','A','S', 'D','F','G','H' ,'J','K','L','Z ','X','C','V',' B','N','M','Q'} ,
{'E','R','T','Y ','U','I','O',' P','A','S','D', 'F','G','H','J' ,'K','L','Z','X ','C','V','B',' N','M','Q','W'} ,
{'R','T','Y','U ','I','O','P',' A','S','D','F', 'G','H','J','K' ,'L','Z','X','C ','V','B','N',' M','Q','W','E'} ,
{'T','Y','U','I ','O','P','A',' S','D','F','G', 'H','J','K','L' ,'Z','X','C','V ','B','N','M',' Q','W','E','R'} ,
{'Y','U','I','O ','P','A','S',' D','F','G','H', 'J','K','L','Z' ,'X','C','V','B ','N','M','Q',' W','E','R','T'} ,
{'U','I','O','P ','A','S','D',' F','G','H','J', 'K','L','Z','X' ,'C','V','B','N ','M','Q','W',' E','R','T','Y'} ,
{'I','O','P','A ','S','D','F',' G','H','J','K', 'L','Z','X','C' ,'V','B','N','M ','Q','W','E',' R','T','Y','U'} ,
{'O','P','A','S ','D','F','G',' H','J','K','L', 'Z','X','C','V' ,'B','N','M','Q ','W','E','R',' T','Y','U','I'} ,
{'P','A','S','D ','F','G','H',' J','K','L','Z', 'X','C','V','B' ,'N','M','Q','W ','E','R','T',' Y','U','I','O'} ,
{'A','S','D','F ','G','H','J',' K','L','Z','X', 'C','V','B','N' ,'M','Q','W','E ','R','T','Y',' U','I','O','P'} ,
{'S','D','F','G ','H','J','K',' L','Z','X','C', 'V','B','N','M' ,'Q','W','E','R ','T','Y','U',' I','O','P','A'} ,
{'D','F','G','H ','J','K','L',' Z','X','C','V', 'B','N','M','Q' ,'W','E','R','T ','Y','U','I',' O','P','A','S'} ,
{'F','G','H','J ','K','L','Z',' X','C','V','B', 'N','M','Q','W' ,'E','R','T','Y ','U','I','O',' P','A','S','D'} ,
{'G','H','J','K ','L','Z','X',' C','V','B','N', 'M','Q','W','E' ,'R','T','Y','U ','I','O','P',' A','S','D','F'} ,
{'H','J','K','L ','Z','X','C',' V','B','N','M', 'Q','W','E','R' ,'T','Y','U','I ','O','P','A',' S','D','F','G'} ,
{'J','K','L','Z ','X','C','V',' B','N','M','Q', 'W','E','R','T' ,'Y','U','I','O ','P','A','S',' D','F','G','H'} ,
{'K','L','Z','X ','C','V','B',' N','M','Q','W', 'E','R','T','Y' ,'U','I','O','P ','A','S','D',' F','G','H','J'} ,
{'L','Z','X','C ','V','B','N',' M','Q','W','E', 'R','T','Y','U' ,'I','O','P','A ','S','D','F',' G','H','J','K'} ,
{'Z','X','C','V ','B','N','M',' Q','W','E','R', 'T','Y','U','I' ,'O','P','A','S ','D','F','G',' H','J','K','L'} ,
{'X','C','V','B ','N','M','Q',' W','E','R','T', 'Y','U','I','O' ,'P','A','S','D ','F','G','H',' J','K','L','Z'} ,
{'C','V','B','N ','M','Q','W',' E','R','T','Y', 'U','I','O','P' ,'A','S','D','F ','G','H','J',' K','L','Z','X'} ,
{'V','B','N','M ','Q','W','E',' R','T','Y','U', 'I','O','P','A' ,'S','D','F','G ','H','J','K',' L','Z','X','C'} ,
{'B','N','M','Q ','W','E','R',' T','Y','U','I', 'O','P','A','S' ,'D','F','G','H ','J','K','L',' Z','X','C','V'} ,
{'N','M','Q','W ','E','R','T',' Y','U','I','O', 'P','A','S','D' ,'F','G','H','J ','K','L','Z',' X','C','V','B'} ,
{'M','Q','W','E ','R','T','Y',' U','I','O','P', 'A','S','D','F' ,'G','H','J','K ','L','Z','X',' C','V','B','N'} ,
};

...>
Any idea as what might be wrong? Thanks!!!


The problem here is that the table for this Vigenere cipher program no
longer has the nice symmetric layout that allowed for relatively easy
decryption. With this table, the program should now search for the
encoded character along the key's axis. The offset where it is found
will be equivalent to the unencrypted letter:

string decrypt(const string& ciphertext, const string& key)
{
string decrypted;

for (int i=0; i < ciphertext.leng th();i++)
for (char j = 0; j < 27; j++)
{
// search for encoded char along axis of key char
if (vTable[j] [key[ i % key.length()]-'A']
== ciphertext[i])
{
decrypted += char(j+'A');
break;
}
}
return decrypted;
}

Greg


OK, but it still doesn't *encrypt* right; I know b/c I checked it by
hand.

Oct 3 '05 #4
On 2 Oct 2005 04:36:38 -0700, "Greg" <gr****@pacbell .net> wrote:

I didn't test anything, but regarding the following:
if (vTable[j] [key[ i % key.length()]-'A']
== ciphertext[i])
{
decrypted += char(j+'A');
break;
}


you should be very careful about how your compiler treats character
types: are they signed or unsigned? In C language, a character literal
has type int, which is of course signed; in C++, it has type plain
char which has unspecified sign (WRT the language, i.e. the sign is
"don't care"). Your compiler will probably have a switch to influence
this behavior. In the above statements, when used within an
expression, I believe that char is implicitly converted to int.

Of course, you will only run into problems with this when trying to
encode text with extended characters; but even in the English
language, they can pop up unexpectedly -- for example, text with
symbols such as '£' or the various typographical quote signs which
MS-Word is so fond of using (and which never display properly in my
browser...), or the Euro sign. These will suddenly appear as negative
values if char is treated as signed.

--
Bob Hairgrove
No**********@Ho me.com
Oct 3 '05 #5
Protoman wrote:


OK, but it still doesn't *encrypt* right; I know b/c I checked it by
hand.
Fine. Now do the very same with your program: That is called debugging.

PS: You might want to 'enhence' your program such that the program helps
you to figure out where you programmed it in a wrong way. Eg.

Your function:
string encrypt(const string& cleartext,const string& key)
{
string encrypted;
for(int i=0;i<cleartext .length();i++)
encrypted+=vTab le[cleartext[i]-'A'][key[i%key.length()]-'A'];
return encrypted;
}


I suggest now to 'enhance' it:

string encrypt(const string& cleartext,const string& key)
{
string encrypted;

for( int i = 0; i < cleartext.lengt h(); i++ ) {

cout << "i: " << i << endl;
cout << "Cleartext[" << i << "]" << cleartext[i] << endl;
cout << "-> " << (int)( cleartext[i]-'A' ) << endl;
cout << "Key[" << i%key.length() << "]" << key[i%key.length()] << endl;
cout << "-> " << (int)( key[i%key.length()]-'A' ) << endl;
cout << "Table: " << vTable[cleartext[i]-'A'][key[i%key.length()]-'A'] << endl;

encrypted += vTable [ cleartext[i] - 'A' ] [ key[i%key.length() ] - 'A' ];
}

return encrypted;
}

That is: All I did was to introduce output statements showing some important
values in the encryption process. Run the program, let it do the same encryption
you did on paper and figure out where your programs behaviour differed from the
one you did on paper. Then draw your conclusions from that analysis and fix your
program. Once it runs as expected, remove (or comment out) the additional code.

(Also note how a little bit of white space at strategic places added a lot to
the readability of the function).

--
Karl Heinz Buchegger
kb******@gascad .at
Oct 3 '05 #6
Protoman wrote:
Greg wrote:
Protoman wrote:
I'm trying to write an encryption program, and it doesn't produce the
right output; "GOOGLE" encrypted w/"GOOGLE" IS NOT "ee".
Here's the code:

namespace
{
const char vTable[26][27]=
{
{'Q','W','E','R ','T','Y','U',' I','O','P','A', 'S','D','F','G' ,'H','J','K','L ','Z','X','C',' V','B','N','M'} ,
{'W','E','R','T ','Y','U','I',' O','P','A','S', 'D','F','G','H' ,'J','K','L','Z ','X','C','V',' B','N','M','Q'} ,

Note that vTable really should by 26 by 26, not 27.
OK, but it still doesn't *encrypt* right; I know b/c I checked it by
hand.


I would check again. It's unlikely decryption would be working if
encryption were broken. It's more likely that your hand encryption
differs somehow from the program's.

When encrypting by hand, the letter from the key is used as the
horizontal axis across the top of the table to select the appropriate
column. The plaintext letter is then used to go down the rows of that
column to select the encrypted letter. For example: given plaintext
GOOGLE and password PASS, the first encrypted letter is the 16th column
('P' is the 16th letter of the alphabet) and 7 rows down ('G' is 7th)
to find the encrypted letter 'C'. Doing the same with the other letters
yields the ciphertext: CGUNQT.

To decrypt the first letter, use the key to find the horizontal access
(it will be the same column that was used to encrypt that lettter) and
then count down the rows until the encrypted letter is found. How ever
many rows down the letter was found will be the unecrypted letter's
position in the alphabet. For example, to decrypt 'C' with the key
letter being 'P', use the key to find the 16th column. Count down the
rows until 'C' is found at the 7th row. The 7th letter of the alphabet
is G, so the first unecrypted letter of CGUNQT with password PASS is G.
Decrypting the rest yields the entire plaintext: GOOGLE.

Greg

Oct 3 '05 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

34
4074
by: Blake T. Garretson | last post by:
I want to save some sensitive data (passwords, PIN numbers, etc.) to disk in a secure manner in one of my programs. What is the easiest/best way to accomplish strong file encryption in Python? Any modern block cipher will do: AES, Blowfish, etc. I'm not looking for public key stuff; I just want to provide a pass-phrase. I found a few...
6
12983
by: Richard | last post by:
I'm looking to do my own basic encryption. I've been tyring to do a concept such as: I pass this function the string, key and number of rounds I want to do the encryption. because im round shifting the bits the decryption doesn't work.. :P Am I going about this all wrong or does anybody know an easier way (besides getting an open source...
113
12236
by: Bonj | last post by:
I was in need of an encryption algorithm to the following requirements: 1) Must be capable of encrypting strings to a byte array, and decyrpting back again to the same string 2) Must have the same algorithm work with strings that may or may not be unicode 3) Number of bytes back must either be <= number of _TCHARs in * sizeof(_TCHAR), or the...
4
2498
by: Phillip Ian | last post by:
Version: VS 2005 I took the sample code from help about encrypting and decrypting strings, and changed it to work directly with byte arrays and get the key and IV values from functions I've written to privide them. No other changes were made... Friend Function EncryptBytes(ByVal Data() As Byte, ByVal APassphrase As String) As Byte() Try
2
7138
by: almurph | last post by:
Hi everyone, Can you help me please? I am having a problem with the encryption/decryption of words with the Irish fada in them. The Irish fada is like this: áéíóú/ÁÉÍÓÚ. It's kind of like the French grave... Anyway when I run encryption on a plaintext word like:
7
6131
by: Steven Cliff | last post by:
I have started to use the new Enterprise Library (Jan 06) and have set up a skeleton project using the DAAB. This all seems to work fine apart from when I come to secure the app.config file via encryption. I have encrypted the connectionsettings block in the config file but obviously when I come to deploy the solution to other PC's, it...
3
5119
by: dmalhotr2001 | last post by:
I was wondering whether anyone ever dealt with encryption that are visa compliant with credit card numbers: On 3.4 of this document (http://usa.visa.com/download/business/accepting_visa/ops_risk_management/cisp_PCI_Data_Security_Standard.pdf) It states the encryption: One-way hashes (hashed indexes), such as SHA-1
25
2374
by: eggie5 | last post by:
I have a form where a user can change his password, but I'm confused on how to prevent this from being transmitted in plain text. Well, I know how not to transmit it in plain text - use any type of encryption, but then the problem is, how do I decrypt it on the server to store it? If I use some type of key based encryption, the how do I...
19
3279
by: klenwell | last post by:
Another request for comments here. I'd like to accomplish something like the scheme outlined at this page here: http://tinyurl.com/3dtcdr In a nutshell, the form uses javascript to hash (md5) the password field using a random one-time salt (nonce) -- generated by php and pasted in the form -- that is then posted with the hashed...
0
7700
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main...
0
7924
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. ...
1
7676
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For...
0
7974
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the...
0
6284
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then...
0
5219
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert...
0
3653
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in...
0
3642
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
1221
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.