21.03.2013 Views

Problem - Kevin Tafuro

Problem - Kevin Tafuro

Problem - Kevin Tafuro

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Table 5-3. Implementations for the SPC_ENCRYPT_INIT macro for each OpenSSL-supported<br />

block cipher<br />

Cipher OpenSSL-based SPC_ENCRYPT_INIT implementation<br />

AES AES_set_encrypt_key(key, keybytes * 8, sched)<br />

Blowfish BF_set_key(sched, keybytes, key)<br />

CAST5 CAST_set_key(sched, keybytes, key)<br />

DES DES_set_key_unchecked((DES_cblock *)key, sched)<br />

3-key Triple-DES DES_set_key_unchecked((DES_cblock *)key, &sched->ks1); \<br />

DES_set_key_unchecked((DES_cblock *)(key + 8), &sched->ks2); \<br />

DES_set_key_unchecked((DES_cblock *)(key + 16), &sched->ks3);<br />

2-key Triple-DES DES_set_key_unchecked((DES_cblock *)key, &sched->ks1); \<br />

DES_set_key_unchecked((DES_cblock *)(key + 8), &sched->ks2);<br />

IDEA idea_set_encrypt_key(key, sched);<br />

RC2 RC2_set_key(sched, keybytes, key, keybytes * 8);<br />

RC5 RC5_32_set_key(sched, keybytes, key, 12);<br />

In most of the implementations in Table 5-3, SPC_DECRYPT_INIT will be the same as<br />

SPC_ENCRYPT_INIT (you can define one to the other). The two exceptions are AES and<br />

IDEA. For AES:<br />

#define SPC_DECRYPT_INIT(sched, key, keybytes) \<br />

AES_set_decrypt_key(key, keybytes * 8, sched)<br />

For IDEA:<br />

#define SPC_DECRYPT_INIT(sched, key, keybytes) { \<br />

IDEA_KEY_SCHEDULE tmp;\<br />

idea_set_encrypt_key(key, &tmp);\<br />

idea_set_decrypt_key(&tmp, sched);\<br />

}<br />

Tables 5-4 and 5-5 provide implementations of the SPC_DO_ENCRYPT and SPC_DO_<br />

DECRYPT macros.<br />

Table 5-4. Implementations for the SPC_DO_ENCRYPT macro for each OpenSSL-supported<br />

block cipher<br />

Cipher OpenSSL-based SPC_DO_ENCRYPT implementation<br />

AES AES_encrypt(in, out, sched)<br />

Blowfish BF_ecb_encrypt(in, out, sched, 1)<br />

CAST5 CAST_ecb_encrypt(in, out, sched, 1)<br />

DES DES_ecb_encrypt(in, out, sched, 1)<br />

3-key Triple-DES DES_ecb3_encrypt((DES_cblock *)in, (DES_cblock *)out, \<br />

&sched->ks1, &sched->ks2, &sched->ks3, 1);<br />

2-key Triple-DES DES_ecb3_encrypt((DES_cblock *)in, (DES_cblock *)out, \<br />

&sched->ks1, &sched->ks2, &sched->ks1, 1);<br />

174 | Chapter 5: Symmetric Encryption<br />

This is the Title of the Book, eMatter Edition<br />

Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!