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

📄 des.pod

📁 开源的ssl算法openssl,版本0.9.8H
💻 POD
📖 第 1 页 / 共 2 页
字号:
=pod=head1 NAMEDES_random_key, DES_set_key, DES_key_sched, DES_set_key_checked,DES_set_key_unchecked, DES_set_odd_parity, DES_is_weak_key,DES_ecb_encrypt, DES_ecb2_encrypt, DES_ecb3_encrypt, DES_ncbc_encrypt,DES_cfb_encrypt, DES_ofb_encrypt, DES_pcbc_encrypt, DES_cfb64_encrypt,DES_ofb64_encrypt, DES_xcbc_encrypt, DES_ede2_cbc_encrypt,DES_ede2_cfb64_encrypt, DES_ede2_ofb64_encrypt, DES_ede3_cbc_encrypt,DES_ede3_cbcm_encrypt, DES_ede3_cfb64_encrypt, DES_ede3_ofb64_encrypt,DES_cbc_cksum, DES_quad_cksum, DES_string_to_key, DES_string_to_2keys,DES_fcrypt, DES_crypt, DES_enc_read, DES_enc_write - DES encryption=head1 SYNOPSIS #include <openssl/des.h> void DES_random_key(DES_cblock *ret); int DES_set_key(const_DES_cblock *key, DES_key_schedule *schedule); int DES_key_sched(const_DES_cblock *key, DES_key_schedule *schedule); int DES_set_key_checked(const_DES_cblock *key,        DES_key_schedule *schedule); void DES_set_key_unchecked(const_DES_cblock *key,        DES_key_schedule *schedule); void DES_set_odd_parity(DES_cblock *key); int DES_is_weak_key(const_DES_cblock *key); void DES_ecb_encrypt(const_DES_cblock *input, DES_cblock *output,         DES_key_schedule *ks, int enc); void DES_ecb2_encrypt(const_DES_cblock *input, DES_cblock *output,         DES_key_schedule *ks1, DES_key_schedule *ks2, int enc); void DES_ecb3_encrypt(const_DES_cblock *input, DES_cblock *output,         DES_key_schedule *ks1, DES_key_schedule *ks2,         DES_key_schedule *ks3, int enc); void DES_ncbc_encrypt(const unsigned char *input, unsigned char *output,         long length, DES_key_schedule *schedule, DES_cblock *ivec,         int enc); void DES_cfb_encrypt(const unsigned char *in, unsigned char *out,        int numbits, long length, DES_key_schedule *schedule,        DES_cblock *ivec, int enc); void DES_ofb_encrypt(const unsigned char *in, unsigned char *out,        int numbits, long length, DES_key_schedule *schedule,        DES_cblock *ivec); void DES_pcbc_encrypt(const unsigned char *input, unsigned char *output,         long length, DES_key_schedule *schedule, DES_cblock *ivec,         int enc); void DES_cfb64_encrypt(const unsigned char *in, unsigned char *out,        long length, DES_key_schedule *schedule, DES_cblock *ivec,        int *num, int enc); void DES_ofb64_encrypt(const unsigned char *in, unsigned char *out,        long length, DES_key_schedule *schedule, DES_cblock *ivec,        int *num); void DES_xcbc_encrypt(const unsigned char *input, unsigned char *output,         long length, DES_key_schedule *schedule, DES_cblock *ivec,         const_DES_cblock *inw, const_DES_cblock *outw, int enc); void DES_ede2_cbc_encrypt(const unsigned char *input,        unsigned char *output, long length, DES_key_schedule *ks1,        DES_key_schedule *ks2, DES_cblock *ivec, int enc); void DES_ede2_cfb64_encrypt(const unsigned char *in,        unsigned char *out, long length, DES_key_schedule *ks1,        DES_key_schedule *ks2, DES_cblock *ivec, int *num, int enc); void DES_ede2_ofb64_encrypt(const unsigned char *in,        unsigned char *out, long length, DES_key_schedule *ks1,        DES_key_schedule *ks2, DES_cblock *ivec, int *num); void DES_ede3_cbc_encrypt(const unsigned char *input,        unsigned char *output, long length, DES_key_schedule *ks1,        DES_key_schedule *ks2, DES_key_schedule *ks3, DES_cblock *ivec,        int enc); void DES_ede3_cbcm_encrypt(const unsigned char *in, unsigned char *out,         long length, DES_key_schedule *ks1, DES_key_schedule *ks2,         DES_key_schedule *ks3, DES_cblock *ivec1, DES_cblock *ivec2,         int enc); void DES_ede3_cfb64_encrypt(const unsigned char *in, unsigned char *out,         long length, DES_key_schedule *ks1, DES_key_schedule *ks2,        DES_key_schedule *ks3, DES_cblock *ivec, int *num, int enc); void DES_ede3_ofb64_encrypt(const unsigned char *in, unsigned char *out,         long length, DES_key_schedule *ks1,         DES_key_schedule *ks2, DES_key_schedule *ks3,         DES_cblock *ivec, int *num); DES_LONG DES_cbc_cksum(const unsigned char *input, DES_cblock *output,         long length, DES_key_schedule *schedule,         const_DES_cblock *ivec); DES_LONG DES_quad_cksum(const unsigned char *input, DES_cblock output[],         long length, int out_count, DES_cblock *seed); void DES_string_to_key(const char *str, DES_cblock *key); void DES_string_to_2keys(const char *str, DES_cblock *key1,        DES_cblock *key2); char *DES_fcrypt(const char *buf, const char *salt, char *ret); char *DES_crypt(const char *buf, const char *salt); int DES_enc_read(int fd, void *buf, int len, DES_key_schedule *sched,        DES_cblock *iv); int DES_enc_write(int fd, const void *buf, int len,        DES_key_schedule *sched, DES_cblock *iv);=head1 DESCRIPTIONThis library contains a fast implementation of the DES encryptionalgorithm.There are two phases to the use of DES encryption.  The first is thegeneration of a I<DES_key_schedule> from a key, the second is theactual encryption.  A DES key is of type I<DES_cblock>. This type isconsists of 8 bytes with odd parity.  The least significant bit ineach byte is the parity bit.  The key schedule is an expanded form ofthe key; it is used to speed the encryption process.DES_random_key() generates a random key.  The PRNG must be seededprior to using this function (see L<rand(3)|rand(3)>).  If the PRNGcould not generate a secure key, 0 is returned.Before a DES key can be used, it must be converted into thearchitecture dependent I<DES_key_schedule> via theDES_set_key_checked() or DES_set_key_unchecked() function.DES_set_key_checked() will check that the key passed is of odd parityand is not a week or semi-weak key.  If the parity is wrong, then -1is returned.  If the key is a weak key, then -2 is returned.  If anerror is returned, the key schedule is not generated.DES_set_key() works likeDES_set_key_checked() if the I<DES_check_key> flag is non-zero,otherwise like DES_set_key_unchecked().  These functions are availablefor compatibility; it is recommended to use a function that does notdepend on a global variable.DES_set_odd_parity() sets the parity of the passed I<key> to odd.DES_is_weak_key() returns 1 is the passed key is a weak key, 0 if itis ok.  The probability that a randomly generated key is weak is1/2^52, so it is not really worth checking for them.The following routines mostly operate on an input and output stream ofI<DES_cblock>s.DES_ecb_encrypt() is the basic DES encryption routine that encrypts ordecrypts a single 8-byte I<DES_cblock> in I<electronic code book>(ECB) mode.  It always transforms the input data, pointed to byI<input>, into the output data, pointed to by the I<output> argument.If the I<encrypt> argument is non-zero (DES_ENCRYPT), the I<input>(cleartext) is encrypted in to the I<output> (ciphertext) using thekey_schedule specified by the I<schedule> argument, previously set viaI<DES_set_key>. If I<encrypt> is zero (DES_DECRYPT), the I<input> (nowciphertext) is decrypted into the I<output> (now cleartext).  Inputand output may overlap.  DES_ecb_encrypt() does not return a value.DES_ecb3_encrypt() encrypts/decrypts the I<input> block by usingthree-key Triple-DES encryption in ECB mode.  This involves encryptingthe input with I<ks1>, decrypting with the key schedule I<ks2>, andthen encrypting with I<ks3>.  This routine greatly reduces the chancesof brute force breaking of DES and has the advantage of if I<ks1>,I<ks2> and I<ks3> are the same, it is equivalent to just encryptionusing ECB mode and I<ks1> as the key.The macro DES_ecb2_encrypt() is provided to perform two-key Triple-DESencryption by using I<ks1> for the final encryption.DES_ncbc_encrypt() encrypts/decrypts using the I<cipher-block-chaining>(CBC) mode of DES.  If the I<encrypt> argument is non-zero, theroutine cipher-block-chain encrypts the cleartext data pointed to bythe I<input> argument into the ciphertext pointed to by the I<output>argument, using the key schedule provided by the I<schedule> argument,and initialization vector provided by the I<ivec> argument.  If theI<length> argument is not an integral multiple of eight bytes, thelast block is copied to a temporary area and zero filled.  The outputis always an integral multiple of eight bytes.DES_xcbc_encrypt() is RSA's DESX mode of DES.  It uses I<inw> andI<outw> to 'whiten' the encryption.  I<inw> and I<outw> are secret(unlike the iv) and are as such, part of the key.  So the key is sortof 24 bytes.  This is much better than CBC DES.

⌨️ 快捷键说明

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