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

📄 wincrypt.pas

📁 1. 发卡服务端:Server 项目文件:autojet.prj 2. 计费客户端:Client 项目文件:internet.prj Explorer.prj 先启动Exp
💻 PAS
📖 第 1 页 / 共 2 页
字号:
UNIT WINCRYPT;

interface

USES WINDOWS,SysUtils;
type HRESULT=LONGINT;
type ALG_ID=WORD;


CONST
        ALG_CLASS_ANY         =         (0);
	ALG_TYPE_ANY             =      (0);
	ALG_SID_ANY              =      (0);
        ALG_CLASS_SIGNATURE       =     (1 shl 13);
        ALG_CLASS_MSG_ENCRYPT     =     (2 shl 13);
        ALG_CLASS_DATA_ENCRYPT    =     (3 shl 13);
        ALG_CLASS_HASH            =     (4 shl 13);
        ALG_CLASS_KEY_EXCHANGE    =     (5 shl 13);

// Algorithm types
        ALG_TYPE_DSS              =     (1 shl 9);
        ALG_TYPE_RSA              =     (2 shl 9);
        ALG_TYPE_BLOCK            =     (3 shl 9);
        ALG_TYPE_STREAM           =     (4 shl 9);
        ALG_TYPE_DH               =     (5 shl 9);
        ALG_TYPE_SECURECHANNEL    =     (6 shl 9);

// Some RSA sub-ids               =

CONST
	ALG_SID_RSA_ANY =                0;
	ALG_SID_RSA_PKCS =               1;
        ALG_SID_RSA_MSATWORK=            2;
        ALG_SID_RSA_ENTRUST =            3;
        ALG_SID_RSA_PGP     =            4;

        ALG_SID_DSS_ANY     =            0;
        ALG_SID_DSS_PKCS    =            1;
        ALG_SID_DSS_DMS     =            2;

        ALG_SID_DES         =            1;
        ALG_SID_3DES        =            3;
        ALG_SID_DESX        =            4;
        ALG_SID_IDEA        =            5;
        ALG_SID_CAST        =            6;
        ALG_SID_SAFERSK64   =            7;
        ALG_SID_SAFERSK128  =            8;
        ALG_SID_3DES_112    =            9;
        ALG_SID_CYLINK_MEK  =            12;
        ALG_SID_RC5         =            13;

        ALG_SID_SKIPJACK    =            10;
        ALG_SID_TEK         =            11;

        CRYPT_MODE_CBCI     =            6;       // ANSI CBC Interleaved
        CRYPT_MODE_CFBP     =            7;       // ANSI CFB Pipelined
        CRYPT_MODE_OFBP     =            8;       // ANSI OFB Pipelined
        CRYPT_MODE_CBCOFM   =            9;       // ANSI CBC + OF Masking
        CRYPT_MODE_CBCOFMI  =            10;      // ANSI CBC + OFM Interleaved

        ALG_SID_RC2         =            2;

        ALG_SID_RC4         =            1;
        ALG_SID_SEAL        =            2;

        ALG_SID_DH_SANDF    =            1;
        ALG_SID_DH_EPHEM    =            2;
        ALG_SID_AGREED_KEY_ANY =         3;
        ALG_SID_KEA         =            4;

// Hash sub ids
        ALG_SID_MD2         =            1;
        ALG_SID_MD4         =            2;
        ALG_SID_MD5         =            3;
        ALG_SID_SHA         =            4;
        ALG_SID_SHA1        =            4;
        ALG_SID_MAC         =            5;
        ALG_SID_RIPEMD      =            6;
        ALG_SID_RIPEMD160   =            7;
        ALG_SID_SSL3SHAMD5  =            8;
        ALG_SID_HMAC        =            9;

// secure channel sub ids
        ALG_SID_SSL3_MASTER =            1;
        ALG_SID_SCHANNEL_MASTER_HASH =   2;
        ALG_SID_SCHANNEL_MAC_KEY     =   3;
        ALG_SID_PCT1_MASTER      =       4;
        ALG_SID_SSL2_MASTER      =       5;
        ALG_SID_TLS1_MASTER      =       6;
        ALG_SID_SCHANNEL_ENC_KEY =       7;

// Our silly example sub-id
        ALG_SID_EXAMPLE          =       80;

        CALG_MD2		  =		(ALG_CLASS_HASH  OR  ALG_TYPE_ANY  OR  ALG_SID_MD2);
        CALG_MD4		  =		(ALG_CLASS_HASH  OR  ALG_TYPE_ANY  OR  ALG_SID_MD4);
        CALG_MD5		  =		(ALG_CLASS_HASH  OR  ALG_TYPE_ANY  OR  ALG_SID_MD5);
        CALG_SHA		  =		(ALG_CLASS_HASH  OR  ALG_TYPE_ANY  OR  ALG_SID_SHA);
        CALG_SHA1		  =		(ALG_CLASS_HASH  OR  ALG_TYPE_ANY  OR  ALG_SID_SHA1);
        CALG_MAC		  =		(ALG_CLASS_HASH  OR  ALG_TYPE_ANY  OR  ALG_SID_MAC);
        CALG_RSA_SIGN		  =	(ALG_CLASS_SIGNATURE  OR  ALG_TYPE_RSA  OR  ALG_SID_RSA_ANY);
        CALG_DSS_SIGN		  =	(ALG_CLASS_SIGNATURE  OR  ALG_TYPE_DSS  OR  ALG_SID_DSS_ANY);
        CALG_RSA_KEYX		  =	(ALG_CLASS_KEY_EXCHANGE OR ALG_TYPE_RSA OR ALG_SID_RSA_ANY);
        CALG_DES		  =		(ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_BLOCK OR ALG_SID_DES);
        CALG_3DES_112		  =	(ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_BLOCK OR ALG_SID_3DES_112);
        CALG_3DES		  =		(ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_BLOCK OR ALG_SID_3DES);
        CALG_RC2		  =		(ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_BLOCK OR ALG_SID_RC2);
        CALG_RC4		  =		(ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_STREAM OR ALG_SID_RC4);
        CALG_SEAL		  =		(ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_STREAM OR ALG_SID_SEAL);
        CALG_DH_SF              =(ALG_CLASS_KEY_EXCHANGE OR ALG_TYPE_DH OR ALG_SID_DH_SANDF);
        CALG_DH_EPHEM		=	(ALG_CLASS_KEY_EXCHANGE OR ALG_TYPE_DH OR ALG_SID_DH_EPHEM);
        CALG_AGREEDKEY_ANY	=	(ALG_CLASS_KEY_EXCHANGE OR ALG_TYPE_DH OR ALG_SID_AGREED_KEY_ANY);
        CALG_KEA_KEYX		=	(ALG_CLASS_KEY_EXCHANGE OR ALG_TYPE_DH OR ALG_SID_KEA);
        CALG_HUGHES_MD5         =(ALG_CLASS_KEY_EXCHANGE OR ALG_TYPE_ANY OR ALG_SID_MD5);
        CALG_SKIPJACK		=	(ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_BLOCK OR ALG_SID_SKIPJACK);
        CALG_TEK		=		(ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_BLOCK OR ALG_SID_TEK);
        CALG_CYLINK_MEK         =(ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_BLOCK OR ALG_SID_CYLINK_MEK);
        CALG_SSL3_SHAMD5        =(ALG_CLASS_HASH  OR  ALG_TYPE_ANY  OR  ALG_SID_SSL3SHAMD5);
        CALG_SSL3_MASTER        =(ALG_CLASS_MSG_ENCRYPT OR ALG_TYPE_SECURECHANNEL OR ALG_SID_SSL3_MASTER);
        CALG_SCHANNEL_MASTER_HASH =  (ALG_CLASS_MSG_ENCRYPT OR ALG_TYPE_SECURECHANNEL OR ALG_SID_SCHANNEL_MASTER_HASH);
        CALG_SCHANNEL_MAC_KEY  = (ALG_CLASS_MSG_ENCRYPT OR ALG_TYPE_SECURECHANNEL OR ALG_SID_SCHANNEL_MAC_KEY);
        CALG_SCHANNEL_ENC_KEY  = (ALG_CLASS_MSG_ENCRYPT OR ALG_TYPE_SECURECHANNEL OR ALG_SID_SCHANNEL_ENC_KEY);
        CALG_PCT1_MASTER       = (ALG_CLASS_MSG_ENCRYPT OR ALG_TYPE_SECURECHANNEL OR ALG_SID_PCT1_MASTER);
        CALG_SSL2_MASTER       = (ALG_CLASS_MSG_ENCRYPT OR ALG_TYPE_SECURECHANNEL OR ALG_SID_SSL2_MASTER);
        CALG_TLS1_MASTER       = (ALG_CLASS_MSG_ENCRYPT OR ALG_TYPE_SECURECHANNEL OR ALG_SID_TLS1_MASTER);
        CALG_RC5               = (ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_BLOCK OR ALG_SID_RC5);
        CALG_HMAC	       =			(ALG_CLASS_HASH  OR  ALG_TYPE_ANY  OR  ALG_SID_HMAC);



type HCRYPTPROV=LONGWORD;
type HCRYPTKEY=LONGWORD;
type HCRYPTHASH=LONGWORD;
type PHCRYPTPROV=^HCRYPTPROV;
type PHCRYPTKEY=^HCRYPTKEY;
type PHCRYPTHASH=^HCRYPTHASH;

// dwFlags definitions for CryptAcquireContext
CONST
        CRYPT_VERIFYCONTEXT   =  $F0000000;
        CRYPT_NEWKEYSET       =  $00000008;
        CRYPT_DELETEKEYSET    =  $00000010;
        CRYPT_MACHINE_KEYSET  =  $00000020;

// dwFlag definitions for CryptGenKey
        CRYPT_EXPORTABLE      =  $00000001;
        CRYPT_USER_PROTECTED  =  $00000002;
        CRYPT_CREATE_SALT     =  $00000004;
        CRYPT_UPDATE_KEY      =  $00000008;
        CRYPT_NO_SALT         =  $00000010;
        CRYPT_PREGEN          =  $00000040;
        CRYPT_RECIPIENT       =  $00000010;
        CRYPT_INITIATOR       =  $00000040;
        CRYPT_ONLINE          =  $00000080;
        CRYPT_SF              =  $00000100;
        CRYPT_CREATE_IV       =  $00000200;
        CRYPT_KEK             =  $00000400;
        CRYPT_DATA_KEY        =  $00000800;

// dwFlags definitions for CryptDeriveKey
       	CRYPT_SERVER	      =  $00000400;

        KEY_LENGTH_MASK       = $FFFF0000;

// dwFlag definitions for CryptExportKey
        CRYPT_Y_ONLY          =  $00000001;
        CRYPT_SSL2_SLUMMING   =  $00000002;

// dwFlags definitions for CryptHashSessionKey
       	CRYPT_LITTLE_ENDIAN   =	$00000001;

// dwFlag definitions for CryptSetProviderEx and CryptGetDefaultProvider
        CRYPT_MACHINE_DEFAULT =  $00000001;
        CRYPT_USER_DEFAULT    =  $00000002;
        CRYPT_DELETE_DEFAULT  =  $00000004;

// exported key blob definitions
        SIMPLEBLOB            =  $1;
        PUBLICKEYBLOB         =  $6;
        PRIVATEKEYBLOB        =  $7;
        PLAINTEXTKEYBLOB      =  $8;

        AT_KEYEXCHANGE        =  1;
        AT_SIGNATURE          =  2;

        CRYPT_USERDATA        =  1;

// dwParam
        KP_IV                 =  1;       // Initialization vector
        KP_SALT               =  2;       // Salt value
        KP_PADDING            =  3;       // Padding values
        KP_MODE               =  4;       // Mode of the cipher
        KP_MODE_BITS          =  5;       // Number of bits to feedback
        KP_PERMISSIONS        =  6;       // Key permissions DWORD
        KP_ALGID              =  7;       // Key algorithm
        KP_BLOCKLEN           =  8;       // Block size of the cipher
        KP_KEYLEN             =  9;       // Length of key in bits
        KP_SALT_EX            =  10;      // Length of salt in bytes
        KP_P                  =  11;      // DSS/Diffie-Hellman P value
        KP_G                  =  12;      // DSS/Diffie-Hellman G value
        KP_Q                  =  13;      // DSS Q value
        KP_X                  =  14;      // Diffie-Hellman X value
        KP_Y                  =  15;      // Y value
        KP_RA                 =  16;      // Fortezza RA value
        KP_RB                 =  17;      // Fortezza RB value
        KP_INFO               =  18;      // for putting information into an RSA envelope
        KP_EFFECTIVE_KEYLEN   =  19;      // setting and getting RC2 effective key length

⌨️ 快捷键说明

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