README.qfdes
资源名称:NETVIDEO.rar [点击查看]
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:6k
源码类别:
流媒体/Mpeg4/MP4
开发平台:
Visual C++
- The qfDES code is derived from Saleem Bhatti's code, but has been significantly
- revised, debugged and updated. The following is the original README, followed
- by some other information which may be useful, taken from Eric Young's libdes.
- ===============================================================================
- This is yet another implementation of DES in software, for those of us that
- don't have access to DES hardware. The library is fairly (but not quite)
- complete, as are the two progs, qf-des and qf-key. However, debugging and
- testing is still proceeding ...
- Quickie Roadmap
- ---------------
- qf-des: Do DES on files (qf-des.c)
- qf-key: Generate keys and IVs (qf-key.c)
- libqfDES.a: library of DES stuff
- qfDES.h: Interface file for libqfDES.a
- qfDES.c: The DES function
- qfDES-print.c: For generating some of the DES macros and S-Box/P transforms
- qfDES-key.c: Key and IV generation
- qfDES-memory.c: Fiddling around with memory
- Disclaimer
- ----------
- This version of the qfDES is for me only, so if you have it and are not me,
- then I take no responsibility for what happens when you use it!
- TTFN,
- --/Saleem
- ===============================================================================
- Modes of DES
- Quite a bit of the following information has been taken from
- AS 2805.5.2
- Australian Standard
- Electronic funds transfer - Requirements for interfaces,
- Part 5.2: Modes of operation for an n-bit block cipher algorithm
- Appendix A
- There are several different modes in which DES can be used, they are
- as follows.
- Electronic Codebook Mode (ECB) (des_ecb_encrypt())
- - 64 bits are enciphered at a time.
- - The order of the blocks can be rearranged without detection.
- - The same plaintext block always produces the same ciphertext block
- (for the same key) making it vulnerable to a 'dictionary attack'.
- - An error will only affect one ciphertext block.
- Cipher Block Chaining Mode (CBC) (des_cbc_encrypt())
- - a multiple of 64 bits are enciphered at a time.
- - The CBC mode produces the same ciphertext whenever the same
- plaintext is encrypted using the same key and starting variable.
- - The chaining operation makes the ciphertext blocks dependent on the
- current and all preceding plaintext blocks and therefore blocks can not
- be rearranged.
- - The use of different starting variables prevents the same plaintext
- enciphering to the same ciphertext.
- - An error will affect the current and the following ciphertext blocks.
- Cipher Feedback Mode (CFB) (des_cfb_encrypt())
- - a number of bits (j) <= 64 are enciphered at a time.
- - The CFB mode produces the same ciphertext whenever the same
- plaintext is encrypted using the same key and starting variable.
- - The chaining operation makes the ciphertext variables dependent on the
- current and all preceding variables and therefore j-bit variables are
- chained together and con not be rearranged.
- - The use of different starting variables prevents the same plaintext
- enciphering to the same ciphertext.
- - The strength of the CFB mode depends on the size of k (maximal if
- j == k). In my implementation this is always the case.
- - Selection of a small value for j will require more cycles through
- the encipherment algorithm per unit of plaintext and thus cause
- greater processing overheads.
- - Only multiples of j bits can be enciphered.
- - An error will affect the current and the following ciphertext variables.
- Output Feedback Mode (OFB) (des_ofb_encrypt())
- - a number of bits (j) <= 64 are enciphered at a time.
- - The OFB mode produces the same ciphertext whenever the same
- plaintext enciphered using the same key and starting variable. More
- over, in the OFB mode the same key stream is produced when the same
- key and start variable are used. Consequently, for security reasons
- a specific start variable should be used only once for a given key.
- - The absence of chaining makes the OFB more vulnerable to specific attacks.
- - The use of different start variables values prevents the same
- plaintext enciphering to the same ciphertext, by producing different
- key streams.
- - Selection of a small value for j will require more cycles through
- the encipherment algorithm per unit of plaintext and thus cause
- greater processing overheads.
- - Only multiples of j bits can be enciphered.
- - OFB mode of operation does not extend ciphertext errors in the
- resultant plaintext output. Every bit error in the ciphertext causes
- only one bit to be in error in the deciphered plaintext.
- - OFB mode is not self-synchronising. If the two operation of
- encipherment and decipherment get out of synchronism, the system needs
- to be re-initialised.
- - Each re-initialisation should use a value of the start variable
- different from the start variable values used before with the same
- key. The reason for this is that an identical bit stream would be
- produced each time from the same parameters. This would be
- susceptible to a ' known plaintext' attack.
- Triple ECB Mode (des_3ecb_encrypt())
- - Encrypt with key1, decrypt with key2 and encrypt with key1 again.
- - As for ECB encryption but increases the effective key length to 112 bits.
- - If both keys are the same it is equivalent to encrypting once with
- just one key.
- Triple CBC Mode (des_3cbc_encrypt())
- - Encrypt with key1, decrypt with key2 and encrypt with key1 again.
- - As for CBC encryption but increases the effective key length to 112 bits.
- - If both keys are the same it is equivalent to encrypting once with
- just one key.
- ===============================================================================