⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 blowfish.pas

📁 blowfish加密算法开发包
💻 PAS
字号:

{
        BLOWFISH.PAS
        This Unit implements the Blowfish Algorithm as it is defined by
        Bruce Schneier in DDJ 10/95 and "Applied Cryptography, 2nd Edition"

        (c)1996 AtmuteSoft
        programmer  : Markus Hahn
}

unit Blowfish;

interface

{**************************************************************************}

{ The following part was originally declared in a special
  unit called GENERAL.PAS, so it could be used throughout
  the whole application. It isn't necessary, but you might
  want to regenerate GENERAL.PAS }

type

{ own basic data types,
  to avoid system dependencies }

  ULONG = Longint;     { unsigned 32bit }
  UINT  = Word;        { unsigned 16bit }
  UCHAR = Byte;        { unsigned 8bit }
  BOOL  = Word;        { 16bit boolean }


{ redef. of special true/false for better portability }
const

  MAXDATA = 65535;


{ some large-buffer declarations }
type
P_UCHAR_Buffer = ^T_UCHAR_Buffer;
T_UCHAR_Buffer = array[0..MAXDATA-1] of UCHAR;
P_UINT_Buffer = ^T_UINT_Buffer;
T_UINT_Buffer = array[0..(MAXDATA div 2)-1] of UINT;
P_ULONG_Buffer = ^T_ULONG_Buffer;
T_ULONG_Buffer = array[0..(MAXDATA div 4)-1] of ULONG;




{**************************************************************************}



{ The exported functions }

procedure Blowfish_Init(pKey : P_UCHAR_Buffer; unKeySize : UINT);
procedure Blowfish_ECBEncrypt(pBuffer : P_ULONG_Buffer; unCount : UINT);
procedure Blowfish_ECBDecrypt(pBuffer : P_ULONG_Buffer; unCount : UINT);
procedure Blowfish_CBCEncrypt(pBuffer : P_ULONG_Buffer; unCount : UINT;
                              var ulCBCLeft, ulCBCRight : ULONG);
procedure Blowfish_CBCDecrypt(pBuffer : P_ULONG_Buffer; unCount : UINT;
                              var ulCBCLeft, ulCBCRight : ULONG);
procedure Blowfish_Done;
procedure Blowfish_SetBoxes(pBuffer : P_ULONG_Buffer);
procedure Blowfish_GetBoxes(pBuffer : P_ULONG_Buffer);
function  Blowfish_SetRounds(Rounds : UINT) : UINT;
function  Blowfish_GetBoxPointer : Pointer;
function  Blowfish_WeakKey : BOOL;

implementation

{$L bfeng386.obj}


procedure Blowfish_Init(pKey : P_UCHAR_Buffer; unKeySize : UINT); external;
procedure Blowfish_ECBEncrypt(pBuffer : P_ULONG_Buffer; unCount : UINT); external;
procedure Blowfish_ECBDecrypt(pBuffer : P_ULONG_Buffer; unCount : UINT); external;
procedure Blowfish_CBCEncrypt(pBuffer : P_ULONG_Buffer; unCount : UINT;
                              var ulCBCLeft, ulCBCRight : ULONG); external;
procedure Blowfish_CBCDecrypt(pBuffer : P_ULONG_Buffer; unCount : UINT;
                              var ulCBCLeft, ulCBCRight : ULONG); external;
procedure Blowfish_Done; external;
procedure Blowfish_SetBoxes(pBuffer : P_ULONG_Buffer); external;
procedure Blowfish_GetBoxes(pBuffer : P_ULONG_Buffer); external;
function  Blowfish_SetRounds(Rounds : UINT): UINT; external;
function  Blowfish_GetBoxPointer : Pointer; external;
function  Blowfish_WeakKey : BOOL; external;

{ No Init }
begin
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -