3DES(Triple DES)標準密鑰長度為 168 位(24 字節),分為三個 56 位子密鑰(K1, K2, K3)。常見開源實現(如 OpenSSL)直接接受 24 字節密鑰。
#include
#include
void des3_encrypt(const unsigned char *key24, const unsigned char *iv8,
const unsigned char *in, int in_len, unsigned char *out) {
DES_key_schedule ks1, ks2, ks3;
DES_cblock *key = (DES_cblock *)key24;
DES_set_key_unchecked(&key[0], &ks1);
DES_set_key_unchecked(&key[1], &ks2);
DES_set_key_unchecked(&key[2], &ks3);
DES_ede3_cbc_encrypt(in, out, in_len, &ks1, &ks2, &ks3, (DES_cblock *)iv8, DES_ENCRYPT);
}
void des3_decrypt(const unsigned char *key24, const unsigned char *iv8,
const unsigned char *in, int in_len, unsigned char *out) {
DES_key_schedule ks1, ks2, ks3;
DES_cblock *key = (DES_cblock *)key24;
DES_set_key_unchecked(&key[0], &ks1);
DES_set_key_unchecked(&key[1], &ks2);
DES_set_key_unchecked(&key[2], &ks3);
DES_ede3_cbc_encrypt(in, out, in_len, &ks1, &ks2, &ks3, (DES_cblock *)iv8, DES_DECRYPT);
}
1234567812345678ABCDEFGH(24 字符 ASCII,直接作為 24 字節密鑰)。
CSDN 下載:3DES C語言完整示例