1des(3) OpenSSL des(3)
2
3
4
6 DES_random_key, DES_set_key, DES_key_sched, DES_set_key_checked,
7 DES_set_key_unchecked, DES_set_odd_parity, DES_is_weak_key,
8 DES_ecb_encrypt, DES_ecb2_encrypt, DES_ecb3_encrypt, DES_ncbc_encrypt,
9 DES_cfb_encrypt, DES_ofb_encrypt, DES_pcbc_encrypt, DES_cfb64_encrypt,
10 DES_ofb64_encrypt, DES_xcbc_encrypt, DES_ede2_cbc_encrypt,
11 DES_ede2_cfb64_encrypt, DES_ede2_ofb64_encrypt, DES_ede3_cbc_encrypt,
12 DES_ede3_cbcm_encrypt, DES_ede3_cfb64_encrypt, DES_ede3_ofb64_encrypt,
13 DES_cbc_cksum, DES_quad_cksum, DES_string_to_key, DES_string_to_2keys,
14 DES_fcrypt, DES_crypt, DES_enc_read, DES_enc_write - DES encryption
15
17 #include <openssl/des.h>
18
19 void DES_random_key(DES_cblock *ret);
20
21 int DES_set_key(const_DES_cblock *key, DES_key_schedule *schedule);
22 int DES_key_sched(const_DES_cblock *key, DES_key_schedule *schedule);
23 int DES_set_key_checked(const_DES_cblock *key,
24 DES_key_schedule *schedule);
25 void DES_set_key_unchecked(const_DES_cblock *key,
26 DES_key_schedule *schedule);
27
28 void DES_set_odd_parity(DES_cblock *key);
29 int DES_is_weak_key(const_DES_cblock *key);
30
31 void DES_ecb_encrypt(const_DES_cblock *input, DES_cblock *output,
32 DES_key_schedule *ks, int enc);
33 void DES_ecb2_encrypt(const_DES_cblock *input, DES_cblock *output,
34 DES_key_schedule *ks1, DES_key_schedule *ks2, int enc);
35 void DES_ecb3_encrypt(const_DES_cblock *input, DES_cblock *output,
36 DES_key_schedule *ks1, DES_key_schedule *ks2,
37 DES_key_schedule *ks3, int enc);
38
39 void DES_ncbc_encrypt(const unsigned char *input, unsigned char *output,
40 long length, DES_key_schedule *schedule, DES_cblock *ivec,
41 int enc);
42 void DES_cfb_encrypt(const unsigned char *in, unsigned char *out,
43 int numbits, long length, DES_key_schedule *schedule,
44 DES_cblock *ivec, int enc);
45 void DES_ofb_encrypt(const unsigned char *in, unsigned char *out,
46 int numbits, long length, DES_key_schedule *schedule,
47 DES_cblock *ivec);
48 void DES_pcbc_encrypt(const unsigned char *input, unsigned char *output,
49 long length, DES_key_schedule *schedule, DES_cblock *ivec,
50 int enc);
51 void DES_cfb64_encrypt(const unsigned char *in, unsigned char *out,
52 long length, DES_key_schedule *schedule, DES_cblock *ivec,
53 int *num, int enc);
54 void DES_ofb64_encrypt(const unsigned char *in, unsigned char *out,
55 long length, DES_key_schedule *schedule, DES_cblock *ivec,
56 int *num);
57
58 void DES_xcbc_encrypt(const unsigned char *input, unsigned char *output,
59 long length, DES_key_schedule *schedule, DES_cblock *ivec,
60 const_DES_cblock *inw, const_DES_cblock *outw, int enc);
61
62 void DES_ede2_cbc_encrypt(const unsigned char *input,
63 unsigned char *output, long length, DES_key_schedule *ks1,
64 DES_key_schedule *ks2, DES_cblock *ivec, int enc);
65 void DES_ede2_cfb64_encrypt(const unsigned char *in,
66 unsigned char *out, long length, DES_key_schedule *ks1,
67 DES_key_schedule *ks2, DES_cblock *ivec, int *num, int enc);
68 void DES_ede2_ofb64_encrypt(const unsigned char *in,
69 unsigned char *out, long length, DES_key_schedule *ks1,
70 DES_key_schedule *ks2, DES_cblock *ivec, int *num);
71
72 void DES_ede3_cbc_encrypt(const unsigned char *input,
73 unsigned char *output, long length, DES_key_schedule *ks1,
74 DES_key_schedule *ks2, DES_key_schedule *ks3, DES_cblock *ivec,
75 int enc);
76 void DES_ede3_cbcm_encrypt(const unsigned char *in, unsigned char *out,
77 long length, DES_key_schedule *ks1, DES_key_schedule *ks2,
78 DES_key_schedule *ks3, DES_cblock *ivec1, DES_cblock *ivec2,
79 int enc);
80 void DES_ede3_cfb64_encrypt(const unsigned char *in, unsigned char *out,
81 long length, DES_key_schedule *ks1, DES_key_schedule *ks2,
82 DES_key_schedule *ks3, DES_cblock *ivec, int *num, int enc);
83 void DES_ede3_ofb64_encrypt(const unsigned char *in, unsigned char *out,
84 long length, DES_key_schedule *ks1,
85 DES_key_schedule *ks2, DES_key_schedule *ks3,
86 DES_cblock *ivec, int *num);
87
88 DES_LONG DES_cbc_cksum(const unsigned char *input, DES_cblock *output,
89 long length, DES_key_schedule *schedule,
90 const_DES_cblock *ivec);
91 DES_LONG DES_quad_cksum(const unsigned char *input, DES_cblock output[],
92 long length, int out_count, DES_cblock *seed);
93 void DES_string_to_key(const char *str, DES_cblock *key);
94 void DES_string_to_2keys(const char *str, DES_cblock *key1,
95 DES_cblock *key2);
96
97 char *DES_fcrypt(const char *buf, const char *salt, char *ret);
98 char *DES_crypt(const char *buf, const char *salt);
99
100 int DES_enc_read(int fd, void *buf, int len, DES_key_schedule *sched,
101 DES_cblock *iv);
102 int DES_enc_write(int fd, const void *buf, int len,
103 DES_key_schedule *sched, DES_cblock *iv);
104
106 This library contains a fast implementation of the DES encryption
107 algorithm.
108
109 There are two phases to the use of DES encryption. The first is the
110 generation of a DES_key_schedule from a key, the second is the actual
111 encryption. A DES key is of type DES_cblock. This type is consists of
112 8 bytes with odd parity. The least significant bit in each byte is the
113 parity bit. The key schedule is an expanded form of the key; it is
114 used to speed the encryption process.
115
116 DES_random_key() generates a random key. The PRNG must be see