mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-12 10:49:07 +02:00
+ Added blowfish units
git-svn-id: trunk@3599 -
This commit is contained in:
parent
7e5b9ac353
commit
d93af200bc
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -841,6 +841,7 @@ fcl/image/pscanvas.pp svneol=native#text/plain
|
||||
fcl/image/targacmn.pp svneol=native#text/plain
|
||||
fcl/inc/avl_tree.pp svneol=native#text/plain
|
||||
fcl/inc/base64.pp svneol=native#text/plain
|
||||
fcl/inc/blowfish.pp svneol=native#text/plain
|
||||
fcl/inc/bufstream.pp svneol=native#text/plain
|
||||
fcl/inc/cachecls.pp svneol=native#text/plain
|
||||
fcl/inc/cgiapp.pp svneol=native#text/plain
|
||||
@ -996,6 +997,7 @@ fcl/tests/socksvr.pp svneol=native#text/plain
|
||||
fcl/tests/sstream.pp svneol=native#text/plain
|
||||
fcl/tests/stringl.pp svneol=native#text/plain
|
||||
fcl/tests/testapp.pp svneol=native#text/plain
|
||||
fcl/tests/testbf.pp svneol=native#text/plain
|
||||
fcl/tests/testbs.pp svneol=native#text/plain
|
||||
fcl/tests/testcgi.html -text
|
||||
fcl/tests/testcgi.pp svneol=native#text/plain
|
||||
|
80
fcl/Makefile
80
fcl/Makefile
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/04/23]
|
||||
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/05/20]
|
||||
#
|
||||
default: all
|
||||
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-palmos arm-wince powerpc64-linux
|
||||
@ -701,121 +701,121 @@ ifeq ($(FULL_TARGET),powerpc64-linux)
|
||||
override TARGET_EXAMPLEDIRS+=tests
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-linux)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-go32v2)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-win32)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-os2)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-freebsd)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-beos)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netbsd)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-solaris)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-qnx)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netware)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-openbsd)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-wdosx)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-darwin)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-emx)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-watcom)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netwlibc)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-wince)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-linux)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-freebsd)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-netbsd)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-amiga)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-atari)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-openbsd)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-palmos)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-linux)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-netbsd)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-macos)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-darwin)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-morphos)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-linux)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-netbsd)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-solaris)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-linux)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-freebsd)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-win64)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-linux)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-palmos)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-wince)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc64-linux)
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
override CLEAN_UNITS+=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
endif
|
||||
override INSTALL_FPCPACKAGE=y
|
||||
ifeq ($(FULL_TARGET),i386-linux)
|
||||
|
@ -22,7 +22,7 @@ packages_emx=netdb
|
||||
|
||||
# clean package units
|
||||
[clean]
|
||||
units=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio
|
||||
units=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszlib trees zbase zcompres zdeflate zinflate zuncompr zutil pthreads streamio blowfish
|
||||
|
||||
[target]
|
||||
dirs=xml image db shedit passrc net fpcunit
|
||||
|
500
fcl/inc/blowfish.pp
Normal file
500
fcl/inc/blowfish.pp
Normal file
@ -0,0 +1,500 @@
|
||||
{
|
||||
$Id: header,v 1.1 2000/07/13 06:33:45 michael Exp $
|
||||
This file is part of the Free Component Library (FCL)
|
||||
Copyright (c) 1999-2000 by the Free Pascal development team
|
||||
|
||||
See the file COPYING.FPC, included in this distribution,
|
||||
for details about the copyright.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
**********************************************************************}
|
||||
{
|
||||
Unit implementing simple blowfish algorithm
|
||||
}
|
||||
{$ifdef fpc}
|
||||
{$mode objfpc}
|
||||
{$h+}
|
||||
{$endif}
|
||||
unit BlowFish;
|
||||
|
||||
interface
|
||||
|
||||
Const
|
||||
BFRounds = 16; { 16 blowfish rounds }
|
||||
|
||||
Type
|
||||
PKey448 = ^TKey448;
|
||||
TKey448 = array [0..55] of Byte;
|
||||
TBFBlock = array[0..1] of LongInt; { BlowFish }
|
||||
|
||||
type
|
||||
TBlowFish = Class(TObject)
|
||||
Private
|
||||
PBox : array[0..(BFRounds+1)] of LongInt;
|
||||
SBox : array[0..3, 0..255] of LongInt;
|
||||
Function F(x : Cardinal) : Cardinal;{$ifdef fpc}inline;{$endif}
|
||||
Public
|
||||
Constructor Create(Key : TKey448; KeySize : Integer);
|
||||
Procedure Encrypt(var Block : TBFBlock);
|
||||
Procedure Decrypt(var Block : TBFBlock);
|
||||
end;
|
||||
|
||||
Implementation
|
||||
|
||||
|
||||
{ Blowfish lookup tables }
|
||||
|
||||
const
|
||||
bf_P: array[0..(BFRounds + 1)] of DWord = (
|
||||
$243F6A88, $85A308D3, $13198A2E, $03707344,
|
||||
$A4093822, $299F31D0, $082EFA98, $EC4E6C89,
|
||||
$452821E6, $38D01377, $BE5466CF, $34E90C6C,
|
||||
$C0AC29B7, $C97C50DD, $3F84D5B5, $B5470917,
|
||||
$9216D5D9, $8979FB1B);
|
||||
|
||||
const
|
||||
bf_S: array[0..3, 0..255] of DWord =
|
||||
(
|
||||
( $D1310BA6, $98DFB5AC, $2FFD72DB, $D01ADFB7,
|
||||
$B8E1AFED, $6A267E96, $BA7C9045, $F12C7F99,
|
||||
$24A19947, $B3916CF7, $0801F2E2, $858EFC16,
|
||||
$636920D8, $71574E69, $A458FEA3, $F4933D7E,
|
||||
|
||||
$0D95748F, $728EB658, $718BCD58, $82154AEE,
|
||||
$7B54A41D, $C25A59B5, $9C30D539, $2AF26013,
|
||||
$C5D1B023, $286085F0, $CA417918, $B8DB38EF,
|
||||
$8E79DCB0, $603A180E, $6C9E0E8B, $B01E8A3E,
|
||||
|
||||
$D71577C1, $BD314B27, $78AF2FDA, $55605C60,
|
||||
$E65525F3, $AA55AB94, $57489862, $63E81440,
|
||||
$55CA396A, $2AAB10B6, $B4CC5C34, $1141E8CE,
|
||||
$A15486AF, $7C72E993, $B3EE1411, $636FBC2A,
|
||||
|
||||
$2BA9C55D, $741831F6, $CE5C3E16, $9B87931E,
|
||||
$AFD6BA33, $6C24CF5C, $7A325381, $28958677,
|
||||
$3B8F4898, $6B4BB9AF, $C4BFE81B, $66282193,
|
||||
$61D809CC, $FB21A991, $487CAC60, $5DEC8032,
|
||||
|
||||
$EF845D5D, $E98575B1, $DC262302, $EB651B88,
|
||||
$23893E81, $D396ACC5, $0F6D6FF3, $83F44239,
|
||||
$2E0B4482, $A4842004, $69C8F04A, $9E1F9B5E,
|
||||
$21C66842, $F6E96C9A, $670C9C61, $ABD388F0,
|
||||
|
||||
$6A51A0D2, $D8542F68, $960FA728, $AB5133A3,
|
||||
$6EEF0B6C, $137A3BE4, $BA3BF050, $7EFB2A98,
|
||||
$A1F1651D, $39AF0176, $66CA593E, $82430E88,
|
||||
$8CEE8619, $456F9FB4, $7D84A5C3, $3B8B5EBE,
|
||||
|
||||
$E06F75D8, $85C12073, $401A449F, $56C16AA6,
|
||||
$4ED3AA62, $363F7706, $1BFEDF72, $429B023D,
|
||||
$37D0D724, $D00A1248, $DB0FEAD3, $49F1C09B,
|
||||
$075372C9, $80991B7B, $25D479D8, $F6E8DEF7,
|
||||
|
||||
$E3FE501A, $B6794C3B, $976CE0BD, $04C006BA,
|
||||
$C1A94FB6, $409F60C4, $5E5C9EC2, $196A2463,
|
||||
$68FB6FAF, $3E6C53B5, $1339B2EB, $3B52EC6F,
|
||||
$6DFC511F, $9B30952C, $CC814544, $AF5EBD09,
|
||||
|
||||
$BEE3D004, $DE334AFD, $660F2807, $192E4BB3,
|
||||
$C0CBA857, $45C8740F, $D20B5F39, $B9D3FBDB,
|
||||
$5579C0BD, $1A60320A, $D6A100C6, $402C7279,
|
||||
$679F25FE, $FB1FA3CC, $8EA5E9F8, $DB3222F8,
|
||||
|
||||
$3C7516DF, $FD616B15, $2F501EC8, $AD0552AB,
|
||||
$323DB5FA, $FD238760, $53317B48, $3E00DF82,
|
||||
$9E5C57BB, $CA6F8CA0, $1A87562E, $DF1769DB,
|
||||
$D542A8F6, $287EFFC3, $AC6732C6, $8C4F5573,
|
||||
|
||||
$695B27B0, $BBCA58C8, $E1FFA35D, $B8F011A0,
|
||||
$10FA3D98, $FD2183B8, $4AFCB56C, $2DD1D35B,
|
||||
$9A53E479, $B6F84565, $D28E49BC, $4BFB9790,
|
||||
$E1DDF2DA, $A4CB7E33, $62FB1341, $CEE4C6E8,
|
||||
|
||||
$EF20CADA, $36774C01, $D07E9EFE, $2BF11FB4,
|
||||
$95DBDA4D, $AE909198, $EAAD8E71, $6B93D5A0,
|
||||
$D08ED1D0, $AFC725E0, $8E3C5B2F, $8E7594B7,
|
||||
$8FF6E2FB, $F2122B64, $8888B812, $900DF01C,
|
||||
|
||||
$4FAD5EA0, $688FC31C, $D1CFF191, $B3A8C1AD,
|
||||
$2F2F2218, $BE0E1777, $EA752DFE, $8B021FA1,
|
||||
$E5A0CC0F, $B56F74E8, $18ACF3D6, $CE89E299,
|
||||
$B4A84FE0, $FD13E0B7, $7CC43B81, $D2ADA8D9,
|
||||
|
||||
$165FA266, $80957705, $93CC7314, $211A1477,
|
||||
$E6AD2065, $77B5FA86, $C75442F5, $FB9D35CF,
|
||||
$EBCDAF0C, $7B3E89A0, $D6411BD3, $AE1E7E49,
|
||||
$00250E2D, $2071B35E, $226800BB, $57B8E0AF,
|
||||
|
||||
$2464369B, $F009B91E, $5563911D, $59DFA6AA,
|
||||
$78C14389, $D95A537F, $207D5BA2, $02E5B9C5,
|
||||
$83260376, $6295CFA9, $11C81968, $4E734A41,
|
||||
$B3472DCA, $7B14A94A, $1B510052, $9A532915,
|
||||
|
||||
$D60F573F, $BC9BC6E4, $2B60A476, $81E67400,
|
||||
$08BA6FB5, $571BE91F, $F296EC6B, $2A0DD915,
|
||||
$B6636521, $E7B9F9B6, $FF34052E, $C5855664,
|
||||
$53B02D5D, $A99F8FA1, $08BA4799, $6E85076A),
|
||||
{SECOND 256}
|
||||
($4B7A70E9, $B5B32944, $DB75092E, $C4192623,
|
||||
$AD6EA6B0, $49A7DF7D, $9CEE60B8, $8FEDB266,
|
||||
$ECAA8C71, $699A17FF, $5664526C, $C2B19EE1,
|
||||
$193602A5, $75094C29, $A0591340, $E4183A3E,
|
||||
|
||||
$3F54989A, $5B429D65, $6B8FE4D6, $99F73FD6,
|
||||
$A1D29C07, $EFE830F5, $4D2D38E6, $F0255DC1,
|
||||
$4CDD2086, $8470EB26, $6382E9C6, $021ECC5E,
|
||||
$09686B3F, $3EBAEFC9, $3C971814, $6B6A70A1,
|
||||
|
||||
$687F3584, $52A0E286, $B79C5305, $AA500737,
|
||||
$3E07841C, $7FDEAE5C, $8E7D44EC, $5716F2B8,
|
||||
$B03ADA37, $F0500C0D, $F01C1F04, $0200B3FF,
|
||||
$AE0CF51A, $3CB574B2, $25837A58, $DC0921BD,
|
||||
|
||||
$D19113F9, $7CA92FF6, $94324773, $22F54701,
|
||||
$3AE5E581, $37C2DADC, $C8B57634, $9AF3DDA7,
|
||||
$A9446146, $0FD0030E, $ECC8C73E, $A4751E41,
|
||||
$E238CD99, $3BEA0E2F, $3280BBA1, $183EB331,
|
||||
|
||||
$4E548B38, $4F6DB908, $6F420D03, $F60A04BF,
|
||||
$2CB81290, $24977C79, $5679B072, $BCAF89AF,
|
||||
$DE9A771F, $D9930810, $B38BAE12, $DCCF3F2E,
|
||||
$5512721F, $2E6B7124, $501ADDE6, $9F84CD87,
|
||||
|
||||
$7A584718, $7408DA17, $BC9F9ABC, $E94B7D8C,
|
||||
$EC7AEC3A, $DB851DFA, $63094366, $C464C3D2,
|
||||
$EF1C1847, $3215D908, $DD433B37, $24C2BA16,
|
||||
$12A14D43, $2A65C451, $50940002, $133AE4DD,
|
||||
|
||||
$71DFF89E, $10314E55, $81AC77D6, $5F11199B,
|
||||
$043556F1, $D7A3C76B, $3C11183B, $5924A509,
|
||||
$F28FE6ED, $97F1FBFA, $9EBABF2C, $1E153C6E,
|
||||
$86E34570, $EAE96FB1, $860E5E0A, $5A3E2AB3,
|
||||
|
||||
$771FE71C, $4E3D06FA, $2965DCB9, $99E71D0F,
|
||||
$803E89D6, $5266C825, $2E4CC978, $9C10B36A,
|
||||
$C6150EBA, $94E2EA78, $A5FC3C53, $1E0A2DF4,
|
||||
$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),
|
||||
{THIRD 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)
|
||||
);
|
||||
|
||||
|
||||
Constructor TBlowFish.Create(Key : TKey448; KeySize : Integer);
|
||||
|
||||
var
|
||||
I : Integer;
|
||||
J : Integer;
|
||||
K : Integer;
|
||||
Data : Cardinal;
|
||||
Block : TBFBlock;
|
||||
|
||||
begin
|
||||
Move(bf_P, PBox, SizeOf(PBox));
|
||||
Move(bf_S, SBox, SizeOf(SBox));
|
||||
|
||||
{ update PArray with the key bits }
|
||||
J := 0;
|
||||
for I := 0 to (BFRounds+1) do begin
|
||||
Data := 0;
|
||||
for K := 0 to 3 do begin
|
||||
Data := (Data shl 8) or Key[J];
|
||||
Inc(J);
|
||||
if J >= KeySize then
|
||||
J := 0;
|
||||
end;
|
||||
PBox[I] := PBox[I] xor Data;
|
||||
end;
|
||||
|
||||
{ Encrypt all-zero block}
|
||||
Block[0] := 0;
|
||||
Block[1] := 0;
|
||||
I := 0;
|
||||
repeat
|
||||
Encrypt(Block);
|
||||
PBox[I] := Block[0];
|
||||
PBox[I+1] := Block[1];
|
||||
Inc(I, 2);
|
||||
until I > BFRounds+1;
|
||||
|
||||
{ Now continue with rest }
|
||||
for J := 0 to 3 do begin
|
||||
I := 0;
|
||||
repeat
|
||||
Encrypt(Block);
|
||||
SBox[J, I] := Block[0];
|
||||
SBox[J, I+1] := Block[1];
|
||||
Inc(I, 2);
|
||||
until I > 255;
|
||||
end;
|
||||
end;
|
||||
|
||||
Function TBlowFish.F(x : Cardinal) : Cardinal;{$ifdef fpc}inline;{$endif}
|
||||
|
||||
var
|
||||
a, b, c, d : Byte;
|
||||
y : cardinal;
|
||||
|
||||
begin
|
||||
d:=x and $FF;
|
||||
x:=x shr 8;
|
||||
c:=x and $FF;
|
||||
x:=x shr 8;
|
||||
b:=x and $FF;
|
||||
x:=x shr 8;
|
||||
a:= x and $FF;
|
||||
Result:=Sbox[0][a]+Sbox[1][b];
|
||||
Result:=Result xor Sbox[2][c];
|
||||
Result:=Result + Sbox[3][d];
|
||||
end;
|
||||
|
||||
procedure TBlowFish.Encrypt(var Block : TBFBlock);
|
||||
var
|
||||
I : Integer;
|
||||
xl,xr,temp : Cardinal;
|
||||
begin
|
||||
Xl:= block[0];
|
||||
Xr:= block[1];
|
||||
for i:=0 to 15 do
|
||||
begin
|
||||
Xl:=Xl xor Pbox[i];
|
||||
Xr:= F(Xl) xor Xr;
|
||||
temp:= Xl;
|
||||
Xl:= Xr;
|
||||
Xr := temp;
|
||||
end;
|
||||
temp := Xl;
|
||||
Xl := Xr;
|
||||
Xr := temp;
|
||||
Xr := Xr xor Pbox[16];
|
||||
Xl := Xl xor Pbox[17];
|
||||
Block[0]:=Xl;
|
||||
Block[1]:=Xr;
|
||||
end;
|
||||
|
||||
procedure TBlowFish.Decrypt(var Block : TBFBlock);
|
||||
var
|
||||
I : Integer;
|
||||
xl,xr,temp : Cardinal;
|
||||
begin
|
||||
Xl:= block[0];
|
||||
Xr:= block[1];
|
||||
for i:=17 downto 2 do
|
||||
begin
|
||||
Xl := Xl xor PBox[i];
|
||||
Xr := F(Xl) xor Xr;
|
||||
temp := Xl;
|
||||
Xl := Xr;
|
||||
Xr := temp;
|
||||
end;
|
||||
|
||||
temp := Xl;
|
||||
Xl := Xr;
|
||||
Xr := temp;
|
||||
Xr := Xr xor Pbox[1];
|
||||
Xl := Xl xor Pbox[0];
|
||||
Block[0]:=Xl;
|
||||
Block[1]:=Xr;
|
||||
end;
|
||||
|
||||
end.
|
@ -63,3 +63,4 @@ testbs.pp Test of TBufStream buffered stream (MVC)
|
||||
ipcserver Server part of SimpleIPC unit test, console app (MVC)
|
||||
ipcclient Client part of SimpleIPC unit test, console app (MVC)
|
||||
testdebug Client part of dbugintf debugging info test (MVC)
|
||||
testbf.pp Test for BlowFish encryption (MVC)
|
44
fcl/tests/testbf.pp
Normal file
44
fcl/tests/testbf.pp
Normal file
@ -0,0 +1,44 @@
|
||||
{
|
||||
$Id: header,v 1.1 2000/07/13 06:33:45 michael Exp $
|
||||
This file is part of the Free Component Library (FCL)
|
||||
Copyright (c) 1999-2000 by the Free Pascal development team
|
||||
|
||||
See the file COPYING.FPC, included in this distribution,
|
||||
for details about the copyright.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
**********************************************************************}
|
||||
|
||||
{ short test for blowfish unit }
|
||||
|
||||
{$mode objfpc}
|
||||
{$h+}
|
||||
|
||||
program testbf;
|
||||
|
||||
uses blowfish;
|
||||
|
||||
Var
|
||||
i : integer;
|
||||
L,R : TBFBlock;
|
||||
K : TKey448;
|
||||
|
||||
begin
|
||||
L[0]:=$DEAD;
|
||||
L[1]:=$BEEF;
|
||||
R:=L;
|
||||
For I:=0 to 55 do
|
||||
K[i]:=Random(255)+1;
|
||||
With TBlowfish.Create(K,448) do
|
||||
Try
|
||||
Encrypt(L);
|
||||
Decrypt(L);
|
||||
If (L[0]<>R[0]) or (L[1]<>R[1]) then
|
||||
Writeln('Error');
|
||||
finally
|
||||
Free;
|
||||
end;
|
||||
end.
|
Loading…
Reference in New Issue
Block a user