主要衍生示例

【勇芳软件工作室】汉化HomePreviousNext

此数据是使用Microsoft RSA Base Provider生成的。您的会话密钥长度和盐长度可能不同,但基本过程应该相同。

我们假设一个应用程序有一个密码(“1134-kelp”),它要从中导出会话密钥。它将首先使用CryptHashData函数对密码进行散列,在这种情况下指定MD5散列算法。以下散列值生成并保存在CSP的内部。

0x00000000 73 40 e6 e2 74 b8 ea 39 s @ ..t..9

0x00000008 93 95 aa 29 d6 38 b5 2a ...)8.*

然后,应用程序将调用CryptDeriveKey函数来创建一个会话密钥,在这种情况下是一个RC4流密码密钥。CSP使用上述哈希值的前五个字节作为密钥本身:

0x00000000 73 40 e6 e2 74 s @ ..t

因为没有指定CRYPT_CREATE_HASH标志,所以键值为零。

如果会话密钥用于加密以下明文缓冲区:

0x00000000 00 01 02 03 04 05 06 07 ........

0x00000008 08 09 0A 0B 0C 0D 0E 0F ........

0x00000010 10 11 12 13 14 15 16 17 ........

0x00000018 18 19 1a 1b 1c 1d 1e 1f ........

生成以下密文数据:

00000000 26 59 24 44 36 9C FA {989 796 005} Y.$ D.6。

0x00000008 11 0C BB 9D B6 A2 BD $ 24 .......

0x00000010 04 2E E3 BA 72个76 27 F3 ....RV'。

0x00000018 8D D5 B4 2F 56 CF F8 C9 .../ V ...

如果应用程序【不】CryptDeriveKey函数调用期间指定CRYPT_CREATE_HASH标志,则该键将被赋予以下11字节盐值:

B8它00000000 AA 29 6 39 93 95 ..9 ...)。

0x00000008 38 b5 2a 8.*

在这种情况下,当上述明文缓冲区被加密时,生成以下密文数据:

0x00000000 47 f4 5d e2 cc 3b 87 1b G.]..;..

0x00000008 95 bc fc 39 fb 86 d3 05 ...9 ....

从A2 FB 91个80个22个2A F1 0x00000010 ......*“

50 0x00000018 C3 B9 91 EC DD 9F .......P