Имхо - гиблый номер. Специально проверил на нескольких алгоритмах шифрования гарнтированной стойкости - ни один не допускает такого
Цитата(Anonimus777 @ 23.12.2012, 14:28 ) | | DaCbCa(X)=Cb |
Это можно "замутить" на чем-то типа xor, но ценность такого шифрования сложно переоценить.
Как проверял:
| Код | type TCipherA = TDCP_blowfish; TCipherB = TDCP_rijndael;
procedure TForm2.btn1Click(Sender: TObject); var CipherA: TCipherA; CipherB: TCipherB; x: string; ca, cb: string; da, db: string; begin CipherA := TCipherA.Create(nil); CipherB := TCipherB.Create(nil); try x := '12345678'; CipherA.InitStr('987654321', TDCP_sha1); CipherB.InitStr('qwertyuioop', TDCP_sha1);
// 1._А_ кодирует Х способом НЕИЗВЕСТНЫМ для В и отправляет ему. // X -> Ca(X) ca := CipherA.EncryptString(x);
// 2. _В_(тихо матерясь): "А вот тебе" // Ca(X)->CbCa(X) cb := CipherB.EncryptString(ca);
// 3. _A_(раскаиваясь, снимает свою кодировку ) // CbCa(X)->DaCbCa(X)=Cb CipherA.Reset; da := CipherA.DecryptString(cb);
// 4. _B_(также снимая свою кодировку) // Cb ->Dв Cв(Х)=Х CipherB.Reset; db := CipherB.DecryptString(da);
if db = x then ShowMessage('cool') else ShowMessage('нифига'); finally CipherA.Free; CipherB.Free; end; end;
|
|