Криптографические алгоритмы защиты информации Blowfish

Автор: Пользователь скрыл имя, 08 Декабря 2011 в 19:45, курсовая работа

Краткое описание

Стремительное развитие средств вычислительной техники и открытых сетей передачи данных обусловило их широкое распространение в повседневной жизни и предпринимательской деятельности. Мощные вычислительные возможности и оперативность передачи информации не только оказали большое влияние на принципы ведения бизнеса, сложившиеся в большинстве традиционных отраслей, но и открыли новые направления развития предпринимательской деятельности. В современных условиях автоматизация банковской деятельности и управления предприятиями является «modus vivendi», а такие слова, как «Internet-banking», «e-commerce» и «smart-cards», уже не вызывают всеобщего удивления и жарких дебатов.
Однако последние достижения человеческой мысли в области компьютерных технологий связаны с появлением не только персональных компьютеров, сетей передачи данных и электронных денег, но и таких понятий, как хакер, информационное оружие, компьютерные вирусы и т.п. Оказывается, что под информационной безопасностью подразумевается одно из ведущих направлений развития информационных технологий - круг задач, решаемых в этой области, постоянно расширяется как в количественном, так и в качественном отношении.

Оглавление

Введение 4
1 Алгоритм Blowfish 29
1.1 Сеть Фейстеля 30
1.2 Описание алгоритма 33
1.3 Стойкость алгоритма 36
2 Криптографические системы 6
2.1 Основные понятия 6
2.2 Требования к криптографическим системам 7
2.3 Симметричные криптосистемы 9
2.4 Ассиметричные криптосистемы 11
2.5 Математические основы 15
3 Выбор оптимального блочного алгоритма шифрования 19
3.1 Сравнительная характеристика алгоритмов 19
3.2 Криптостойкость рассмотренных алгоритмов 25
4 Описание работы программы 38
Заключение 41
Список используемых источников 42
Приложение А Исходный код алгоритма Blowfish 43

Файлы: 1 файл

курсовая blowfish.docx

— 446.14 Кб (Скачать)

  $f2f74ea7, $361d2b3d, $1939260f, $19c27960, 

  $5223a708, $f71312b6, $ebadfe6e, $eac31f66,

  $e3bc4595, $a67bc883, $b17f37d1, $018cff28,

  $c332ddef, $be6c5aa5, $65582185, $68ab9802,

  $eecea50f, $db2f953b, $2aef7dad, $5b6e2f84, 

  $1521b628, $29076170, $ecdd4775, $619f1510,

  $13cca830, $eb61bd96, $0334fe1e, $aa0363cf,

  $b5735c90, $4c70a239, $d59e9e0b, $cbaade14,

  $eecc86bc, $60622ca7, $9cab5cab, $b2f3846e, 

  $648b1eaf, $19bdf0ca, $a02369b9, $655abb50,

  $40685a32, $3c2ab4b3, $319ee9d5, $c021b8f7,

  $9b540b19, $875fa099, $95f7997e, $623d7da8,

  $f837889a, $97e32d77, $11ed935f, $16681281, 

  $0e358829, $c7e61fd6, $96dedfa1, $7858ba99,

  $57f584a5, $1b227263, $9b83c3ff, $1ac24696,

  $cdb30aeb, $532e3054, $8fd948e4, $6dbc3128,

  $58ebf2ef, $34c6ffea, $fe28ed61, $ee7c3c73, 

  $5d4a14d9, $e864b7e3, $42105d14, $203e13e0,

  $45eee2b6, $a3aaabea, $db6c4f15, $facb4fd0,

  $c742f442, $ef6abbb5, $654f3b1d, $41cd2105,

  $d81e799e, $86854dc7, $e44b476a, $3d816250, 

  $cf62a1f2, $5b8d2646, $fc8883a0, $c1c7b6a3,

  $7f1524c3, $69cb7492, $47848a0b, $5692b285,

  $095bbf00, $ad19489d, $1462b174, $23820e00,

  $58428d2a, $0c55f5ea, $1dadf43e, $233f7061, 

  $3372f092, $8d937e41, $d65fecf1, $6c223bdb,

  $7cde3759, $cbee7460, $4085f2a7, $ce77326e,

  $a6078084, $19f8509e, $e8efd855, $61d99735,

  $a969a7aa, $c50c06c2, $5a04abfc, $800bcadc, 

  $9e447a2e, $c3453484, $fdd56705, $0e1e9ec9,

  $db73dbd3, $105588cd, $675fda79, $e3674340,

  $c5c43465, $713e38d8, $3d28f89e, $f16dff20,

  $153e21e7, $8fb03d4a, $e6e39f2b, $db83adf7),

  {Thrid 256}

($e93d5a68, $948140f7, $f64c261c, $94692934,

  $411520f7, $7602d4f7, $bcf46b2e, $d4a20068,

  $d4082471, $3320f46a, $43b7d4b7, $500061af,

  $1e39f62e, $97244546, $14214f74, $bf8b8840, 

  $4d95fc1d, $96b591af, $70f4ddd3, $66a02f45,

  $bfbc09ec, $03bd9785, $7fac6dd0, $31cb8504,

  $96eb27b3, $55fd3941, $da2547e6, $abca0a9a,

  $28507825, $530429f4, $0a2c86da, $e9b66dfb, 

  $68dc1462, $d7486900, $680ec0a4, $27a18dee,

  $4f3ffea2, $e887ad8c, $b58ce006, $7af4d6b6,

  $aace1e7c, $d3375fec, $ce78a399, $406b2a42,

  $20fe9e35, $d9f385b9, $ee39d7ab, $3b124e8b, 

  $1dc9faf7, $4b6d1856, $26a36631, $eae397b2,

  $3a6efa74, $dd5b4332, $6841e7f7, $ca7820fb,

  $fb0af54e, $d8feb397, $454056ac, $ba489527,

  $55533a3a, $20838d87, $fe6ba9b7, $d096954b, 

  $55a867bc, $a1159a58, $cca92963, $99e1db33,

  $a62a4a56, $3f3125f9, $5ef47e1c, $9029317c,

  $fdf8e802, $04272f70, $80bb155c, $05282ce3,

  $95c11548, $e4c66d22, $48c1133f, $c70f86dc, 

  $07f9c9ee, $41041f0f, $404779a4, $5d886e17,

  $325f51eb, $d59bc0d1, $f2bcc18f, $41113564,

  $257b7834, $602a9c60, $dff8e8a3, $1f636c1b,

  $0e12b4c2, $02e1329e, $af664fd1, $cad18115, 

  $6b2395e0, $333e92e1, $3b240b62, $eebeb922,

  $85b2a20e, $e6ba0d99, $de720c8c, $2da2f728,

  $d0127845, $95b794fd, $647d0862, $e7ccf5f0,

  $5449a36f, $877d48fa, $c39dfd27, $f33e8d1e, 

  $0a476341, $992eff74, $3a6f6eab, $f4f8fd37,

  $a812dc60, $a1ebddf8, $991be14c, $db6e6b0d,

  $c67b5510, $6d672c37, $2765d43b, $dcd0e804,

  $f1290dc7, $cc00ffa3, $b5390f92, $690fed0b, 

  $667b9ffb, $cedb7d9c, $a091cf0b, $d9155ea3,

  $bb132f88, $515bad24, $7b9479bf, $763bd6eb,

  $37392eb3, $cc115979, $8026e297, $f42e312d,

  $6842ada7, $c66a2b3b, $12754ccc, $782ef11c, 

  $6a124237, $b79251e7, $06a1bbe6, $4bfb6350,

  $1a6b1018, $11caedfa, $3d25bdd8, $e2e1c3c9,

  $44421659, $0a121386, $d90cec6e, $d5abea2a,

  $64af674e, $da86a85f, $bebfe988, $64e4c3fe, 

  $9dbc8057, $f0f7c086, $60787bf8, $6003604d,

  $d1fd8346, $f6381fb0, $7745ae04, $d736fccc,

  $83426b33, $f01eab71, $b0804187, $3c005e5f,

  $77a057be, $bde8ae24, $55464299, $bf582e61, 

  $4e58f48f, $f2ddfda2, $f474ef38, $8789bdc2,

  $5366f9c3, $c8b38e74, $b475f255, $46fcd9b9,

  $7aeb2661, $8b1ddf84, $846a0e79, $915f95e2,

  $466e598e, $20b45770, $8cd55591, $c902de4c, 

  $b90bace1, $bb8205d0, $11a86248, $7574a99e,

  $b77f19b6, $e0a9dc09, $662d09a1, $c4324633,

  $e85a1f02, $09f0be8c, $4a99a025, $1d6efe10,

  $1ab93d1d, $0ba5a4df, $a186f20f, $2868f169, 

  $dcb7da83, $573906fe, $a1e2ce9b, $4fcd7f52,

  $50115e01, $a70683fa, $a002b5c4, $0de6d027,

  $9af88c27, $773f8641, $c3604c06, $61a806b5,

  $f0177a28, $c0f586e0, $006058aa, $30dc7d62, 

  $11e69ed7, $2338ea63, $53c2dd94, $c2c21634,

  $bbcbee56, $90bcb6de, $ebfc7da1, $ce591d76,

  $6f05e409, $4b7c0188, $39720a3d, $7c927c24,

  $86e3725f, $724d9db9, $1ac15bb4, $d39eb8fc, 

  $ed545578, $08fca5b5, $d83d7cd3, $4dad0fc4,

  $1e50ef5e, $b161e6f8, $a28514d9, $6c51133c,

  $6fd5c7e7, $56e14ec4, $362abfce, $ddc6c837,

  $d79a3234, $92638212, $670efa8e, $406000e0),

  {Fourth 256}

($3a39ce37, $d3faf5cf, $abc27737, $5ac52d1b,

  $5cb0679e, $4fa33742, $d3822740, $99bc9bbe,

  $d5118e9d, $bf0f7315, $d62d1c7e, $c700c47b,

  $b78c1b6b, $21a19045, $b26eb1be, $6a366eb4, 

  $5748ab2f, $bc946e79, $c6a376d2, $6549c2c8,

  $530ff8ee, $468dde7d, $d5730a1d, $4cd04dc6,

  $2939bbdb, $a9ba4650, $ac9526e8, $be5ee304,

  $a1fad5f0, $6a2d519a, $63ef8ce2, $9a86ee22, 

  $c089c2b8, $43242ef6, $a51e03aa, $9cf2d0a4,

  $83c061ba, $9be96a4d, $8fe51550, $ba645bd6,

  $2826a2f9, $a73a3ae1, $4ba99586, $ef5562e9,

  $c72fefd3, $f752f7da, $3f046f69, $77fa0a59, 

  $80e4a915, $87b08601, $9b09e6ad, $3b3ee593,

  $e990fd5a, $9e34d797, $2cf0b7d9, $022b8b51,

  $96d5ac3a, $017da67d, $d1cf3ed6, $7c7d2d28,

  $1f9f25cf, $adf2b89b, $5ad6b472, $5a88f54c, 

  $e029ac71, $e019a5e6, $47b0acfd, $ed93fa9b,

  $e8d3c48d, $283b57cc, $f8d56629, $79132e28,

  $785f0191, $ed756055, $f7960e44, $e3d35e8c,

  $15056dd4, $88f46dba, $03a16125, $0564f0bd, 

  $c3eb9e15, $3c9057a2, $97271aec, $a93a072a,

  $1b3f6d9b, $1e6321f5, $f59c66fb, $26dcf319,

  $7533d928, $b155fdf5, $03563482, $8aba3cbb,

  $28517711, $c20ad9f8, $abcc5167, $ccad925f, 

  $4de81751, $3830dc8e, $379d5862, $9320f991,

  $ea7a90c2, $fb3e7bce, $5121ce64, $774fbe32,

  $a8b6e37e, $c3293d46, $48de5369, $6413e680,

  $a2ae0810, $dd6db224, $69852dfd, $09072166, 

  $b39a460a, $6445c0dd, $586cdecf, $1c20c8ae,

  $5bbef7dd, $1b588d40, $ccd2017f, $6bb4e3bb,

  $dda26a7e, $3a59ff45, $3e350a44, $bcb4cdd5,

  $72eacea8, $fa6484bb, $8d6612ae, $bf3c6f47, 

  $d29be463, $542f5d9e, $aec2771b, $f64e6370,

  $740e0d8d, $e75b1357, $f8721671, $af537d5d,

  $4040cb08, $4eb4e2cc, $34d2466a, $0115af84,

  $e1b00428, $95983a1d, $06b89fb4, $ce6ea048, 

  $6f3f3b82, $3520ab82, $011a1d4b, $277227f8,

  $611560b1, $e7933fdc, $bb3a792b, $344525bd,

  $a08839e1, $51ce794b, $2f32c9b7, $a01fbac9,

  $e01cc87e, $bcc7d1f6, $cf0111c3, $a1e8aac7, 

  $1a908749, $d44fbd9a, $d0dadecb, $d50ada38,

  $0339c32a, $c6913667, $8df9317c, $e0b12b4f,

  $f79e59b7, $43f5bb3a, $f2d519ff, $27d9459c,

  $bf97222c, $15e6fc2a, $0f91fc71, $9b941525, 

  $fae59361, $ceb69ceb, $c2a86459, $12baa8d1,

  $b6c1075e, $e3056a0c, $10d25065, $cb03a442,

  $e0ec6e0e, $1698db3b, $4c98a0be, $3278e964,

  $9f1f9532, $e0d392df, $d3a0342b, $8971f21e, 

  $1b0a7441, $4ba3348c, $c5be7120, $c37632d8,

  $df359f8d, $9b992f2e, $e60b6f47, $0fe3f11d,

  $e54cda54, $1edad891, $ce6279cf, $cd3e7e6f,

  $1618b166, $fd2c1d05, $848fd2c5, $f6fb2299, 

  $f523f357, $a6327623, $93a83531, $56cccd02,

  $acf08162, $5a75ebb5, $6e163697, $88d273cc,

  $de966292, $81b949d0, $4c50901b, $71c65614,

  $e6c6c7bd, $327a140a, $45e1d006, $c3f27b9a, 

  $c9aa53fd, $62a80f00, $bb25bfe2, $35bdd2f6,

  $71126905, $b2040222, $b6cbcf7c, $cd769c2b,

  $53113ec0, $1640e3d3, $38abbd60, $2547adf0,

  $ba38209c, $f746ce76, $77afa1c5, $20756060, 

  $85cbfe4e, $8ae88dd8, $7aaaf9b0, $4cf9aa7e,

  $1948c25c, $02fb8a8c, $01c36ae4, $d6ebe1f9,

  $90d4f869, $a65cdea0, $3f09252d, $c208e69f,

  $b74e6132, $ce77e25b, $578fdfe3, $3ac372e6){,}

);{bf_S} 

implementation 
 

procedure Register;

begin

  RegisterComponents('Crypto', [TBlowfish]);

end; 
 

constructor TBlowFish.Create(Owner: TComponent);

begin

  FBLOCKSIZE := SizeOf(aword) * 2;

  New(Fpbf_P); 

  New(Fpbf_S);

  inherited Create(Owner);

end; 

destructor TBlowFish.Destroy;

begin

  If Fpbf_P <> nil then Dispose(Fpbf_P);

  If Fpbf_S <> nil then Dispose(Fpbf_S);

  inherited Destroy;

end;{TBlowFish.Destroy;} 
 

Procedure TBlowFish.InitArray;

var i, j: integer;

begin

  For i:= 0 to (bf_N + 1) do begin

   Fpbf_P^[i] := bf_P[i];

  end; 

  For i:= 0 to 3 do begin

   for j:= 0 to 255 do begin

    Fpbf_S^[i, j] := bf_S[i, j];

   end;{j while}

   j:= 0;

  end;{i for} 

end; 

Procedure TBlowFish.SetKeys;

var

 kLength: integer;

begin

 kLength := Length(FKey);

If (kLength < BF_MINKEYLENGTH) or (kLength > BF_MAXKEYLENGTH) then

    FKey := '';

 InitArray;

 BF_Initialize;

end; 

function TBlowFish.bf_F(x: Paword): aword;

 begin

   bf_F.Lword := ((Fpbf_S^[0, x^.w.byte0] + Fpbf_S^[1, x^.w.byte1])

   Xor Fpbf_S^[2, x^.w.byte2]) + Fpbf_S^[3, x^.w.byte3];

end; 

Procedure TBlowFish.ROUND(a, b: Paword; n: BYTE);

var

 bF : aword;

 begin

   bF.Lword := ((Fpbf_S^[0, b^.w.byte0] + Fpbf_S^[1, b^.w.byte1])

   Xor Fpbf_S^[2, b^.w.byte2]) + Fpbf_S^[3, b^.w.byte3];

   a^.Lword := a^.Lword Xor (bF.Lword Xor Fpbf_P^[n]);

end; 

Procedure TBlowFish.BF_Initialize;

Информация о работе Криптографические алгоритмы защиты информации Blowfish