Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Трехэтапный протокол Шамира


Автор: Anonimus777 23.12.2012, 14:28
спасибо)

Автор: kami 23.12.2012, 17:43
Имхо - гиблый номер. Специально проверил на нескольких алгоритмах шифрования гарнтированной стойкости - ни один не допускает такого
Цитата(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;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)