青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

about des_encrypt()

Posted on 2010-01-22 10:51 S.l.e!ep.¢% 閱讀(1128) 評論(0)  編輯 收藏 引用

des_encrypt() -- SSLeay 0.9.0b -- January 1999

NAME

des_encrypt, des_encrypt2, des_ecb_encrypt, des_cbc_encrypt, des_ncbc_encrypt,
des_xcbc_encrypt, des_pcbc_encrypt, des_cfb_encrypt, des_cfb64_encrypt,
des_ofb_encrypt, des_ofb64_encrypt -- DES encryption

SYNOPSIS

#include "des.h"

void des_encrypt(data,ks,enc)
unsigned long *data;
des_key_schedule ks; int enc;

void des_encrypt2(data,ks,enc)
unsigned long *data;
des_key_schedule ks; int enc;

void des_ecb_encrypt(input,output,ks,enc)
des_cblock *input, *output;
des_key_schedule ks; int enc;

void des_cbc_encrypt(input,output,length,ks,ivec,enc)
des_cblock *input, *output, *ivec;
long length;
des_key_schedule ks;
int enc;

void des_ncbc_encrypt(input,output,length,ks,ivec,enc)
des_cblock *input, *output, *ivec;
long length;
des_key_schedule ks;
int enc;

void des_xcbc_encrypt(input,output,length,ks,ivec,inw,outw,enc)
des_cblock *input, *output, *ivec, *inw, *outw;
des_cblock *output;
long length;
des_key_schedule ks;
int enc;

void des_pcbc_encrypt(input,output,length,ks,ivec,enc)
des_cblock *input, *output, *ivec;
long length;
des_key_schedule ks;
int enc;

void des_cfb_encrypt(in,out,numbits,length,ks,ivec,enc)
unsigned char *input, *output;
int numbits, enc;
long length;
des_key_schedule ks;
des_cblock *ivec;

void des_cfb64_encrypt(in,out,length,ks,ivec,num,enc)
unsigned char *in, *out;
long length;
des_key_schedule ks;
des_cblock *ivec;
int *num, enc;

void des_ofb_encrypt(in,out,numbits,length,ks,ivec)
unsigned char *in, *out;
int numbits;
long length;
des_key_schedule ks;
des_cblock *ivec;

void des_ofb64_encrypt(in,out,length,ks,ivec,num)
unsigned char *in, *out;
long length;
des_key_schedule ks;
des_cblock *ivec;
int *num;

DESCRIPTION

In any function prototype which has arguments input and output, the same variable can be passed for both arguments.

des_encrypt() is the basic building block used by all of the other DES encryption routines. It should be used only to implement a DES mode that the library doesn't already supply.

des_encrypt operates on data which is a pointer to two DES_LONGs (at least 4 characters per element, maybe more depending on how large a long is on your machine, but in that case, the extra bytes are treated as padding). In order to make this work right, each function implementing a DES mode does conversion of the input block, essentially a string of characters, to an array of DES_LONGs before invoking des_encrypt. After the encryption the function does the reverse conversion. Here's an example (from ecb_enc.c):

void des_ecb_encrypt(input, output, ks, encrypt)
des_cblock (*input);
des_cblock (*output);
des_key_schedule ks;
int encrypt;
        {
        register DES_LONG l;
        register unsigned char *in,*out;
        DES_LONG ll[2];

        in=(unsigned char *)input;
        out=(unsigned char *)output;
        c2l(in,l); ll[0]=l;
        c2l(in,l); ll[1]=l;
        des_encrypt(ll,ks,encrypt);
        l=ll[0]; l2c(l,out);
        l=ll[1]; l2c(l,out);
        l=ll[0]=ll[1]=0;
        }

ks is a previously-initialized des_key_schedule.

enc takes either the value DES_ENCRYPT, in which case encryption is performed, or DES_DECRYPT, in which case decryption is performed.

des_encrypt2() is identical to des_encrypt except that the DES initial permutation (IP) and final permutation (FP) have been left out. Again, this function should not be used except to implement new DES modes.

It is currently used to implement the various triple-DES modes.

(IP() des_encrypt2() des_encrypt2() des_encrypt2() FP()
is the same as
des_encrypt() des_encrypt() des_encrypt()
except faster :-).)

des_ecb_encrypt() is the Electronic Code Book form of DES, the most basic form of the algorithm. The des_cblock pointed to by input is encrypted into the block pointed to by output (which may be the same as input) using the key represented by ks. enc takes either the value DES_ENCRYPT, in which case encryption is performed, or DES_DECRYPT, in which case decryption is performed.

des_cbc_encrypt() implements DES in Cipher Block Chaining mode. The des_cblocks pointed to by input are encrypted (or decrypted) to the blocks pointed to by output.

Length should contain the number of des_cblocks * 8 (i.e. the total length of the input).

If length is not a multiple of 8, the results are unpredictable.

ivec is used to hold the output cipher text before calling the function again, if you are encrypting a text in several separate calls. This output is typically used in some way to modify the algorithm so that, if you use one of the chaining or feedback modes, encryption of the same block of text does not always give the same output (but encryption of the same block of text, with the same ivec in place, will typically give the same output).

See DES encryption modes overview for a discussion of the various modes.

For more details about the modes, see FIPS Pub 81: DES Modes of Operation; this is the updated version from May of 1996.

Unfortunately, this function does not automatically update ivec; the user must do it by copying in the last 8 bytes of output cipher text into ivec before the next call to this function.

ivec must be initialized to some known (but randomly generated) state before calling this function on the first chunk of data (and when you decrypt the data, the same initialization needs to be used for the first decryption call).

For example (from destest.c),

    des_cbc_encrypt((C_Block *)cbc_data,(C_Block *)cbc_out,
         (long)strlen((char *)cbc_data)+1,ks,
         (C_Block *)cbc_iv,DES_ENCRYPT);
    des_cbc_encrypt((C_Block *)cbc_out,(C_Block *)cbc_in,
         (long)strlen((char *)cbc_data)+1,ks,
         (C_Block *)cbc_iv,DES_DECRYPT);

where cbc_iv has been initialized previously by the user.

des_ncbc_encrypt() is identical to des_cbc_encrypt except that it does the update of ivec automatically. For tha reason it should be used in preference to des_cbc_encrypt whenever possible.

des_xcbc_encrypt() is RSA's DESX mode of DES. It uses inw and outw, supplied by the user, to 'whiten' the key. These should be nice random strings like the DES key unless the user is choosing them manually.

DESX is defined as key1 xor (des ( key2 xor input ) ), where the des encryption is done with a third key key3. Here, inw is keyn, and outw is keyn.

This substantially strengthens the algorithm against exhaustive search of the key space; see DES algorithm references for more details.

des_pcbc_encrypt() is the Propagating Cipher Block Chaining mode of DES. It is used by Kerberos v4. Its parameters are the same as des_ncbc_encrypt().

des_cfb_encrypt() is the Cipher Feedback mode of DES. This implementation 'feeds back' in numbit blocks. The input in) and the output out is in multiples of numbits bits, and numbit should be a multiple of 8 bits. length is the number of bytes in in.

If numbits is not a multiple of 8 bits, the extra bits in the bytes will be considered padding. For example, if numbits is 12, for each 2 input bytes, the 4 high bits of the second byte will be ignored. So to encode 72 bits when using numbits of 12 takes 12 bytes. To encode 72 bits when using numbits of 9 will take 16 bytes. To encode 80 bits when using numbits of 16 will take 10 bytes, and so on. This padding factor applies to both in and out.

ivec is used to keep intermediate results for subsequent calls, and as input to the function the first time it is called on a text.

It should be initialized to a known (but randomly generated) state before this function is called on the first part of a piece of data.

ks is a key schedule that has been previously set by des_set_key.

enc takes either the value DES_ENCRYPT, in which case encryption is performed, or DES_DECRYPT, in which case decryption is performed.

des_cfb64_encrypt() implements the Cipher Feedback Mode of DES, with 64 bit feedback. The arguments are the same as for des_cfb_encrypt except that there is no numbits argument, because there is no padding factor, and there is an additional num argument which is updated by the function along with ivec after each call.

The num argument is updated to show how many bytes of the ivec have been used; one step in the algorithm includes the xor of a byte of the plaintext with a byte of the (encrypted) ivec, so that all 8 bytes of the ivec are used in turn for an input block of 8 bytes. As each byte of the ivec is used, a new byte is created by the algorithm and stuffed into the ivec in place of the used byte. The following byte would be used next, and so on. num can be thought of as a pointer into the ivec to show which byte to start xor-ing with, the next time the function is called.

des_ofb_encrypt() is a implementation of the Output Feedback mode of DES. Its parameters are the same as those of des_cfb_encrypt() except that there is no < b>argument; encryption and decryption use the same arguments. in and out must be multiples of numbits long, numbits should be a multiple of 8 bits, and if it is not, the same padding factor comes into play.

Note that there is no enc parameter; this algorithm functions the same for encryption and decryption.

des_ofb64_encrypt() implements the Output Feedback Mode of DES, with 64 bit feedback. The arguments are the same as for des_cfb64_encrypt.


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品视频亚洲| 美女日韩欧美| 国产日韩欧美在线一区| 午夜天堂精品久久久久| 亚洲性视频h| 国产精品裸体一区二区三区| 亚洲一区中文字幕在线观看| 亚洲视屏在线播放| 国产亚洲一区二区三区| 久久久美女艺术照精彩视频福利播放 | 国产三区二区一区久久 | 日韩视频―中文字幕| 欧美区日韩区| 亚洲欧美日韩天堂一区二区| 午夜一区在线| 亚洲国产日韩在线一区模特| 欧美激情小视频| 欧美激情综合| 欧美在线1区| 久久一区二区三区四区五区| 一区二区电影免费在线观看| 亚洲欧美美女| 亚洲精品一区二区三区四区高清 | 99这里只有久久精品视频| 一本色道久久综合亚洲91| 国产香蕉97碰碰久久人人| 久久最新视频| 欧美日本国产一区| 久久国产精品第一页| 欧美顶级少妇做爰| 久久成人av少妇免费| 欧美1区3d| 欧美在线你懂的| 欧美激情aⅴ一区二区三区| 性久久久久久久久久久久| 久久先锋影音| 久久成人免费网| 欧美高清视频在线播放| 久久精品国产精品| 欧美日韩午夜激情| 卡通动漫国产精品| 国产美女扒开尿口久久久| 亚洲国产精品第一区二区三区| 亚洲一区二区三区777| 亚洲第一福利在线观看| 亚洲午夜精品在线| 99精品99| 免费在线观看精品| 久久精品国产99国产精品| 欧美日韩综合视频| 亚洲激情女人| 91久久精品美女高潮| 欧美一区二区三区在线看 | 欧美成年网站| 毛片基地黄久久久久久天堂| 国产精品尤物| 亚洲一区二区三区精品在线| 9l国产精品久久久久麻豆| 久久成人精品无人区| 欧美一级艳片视频免费观看| 欧美日韩日本网| 日韩一二三区视频| 一级日韩一区在线观看| 欧美激情一区二区三区在线视频观看| 亚洲另类在线一区| 久久精品国产亚洲精品| 欧美一区二区大片| 国产精品黄视频| 一区二区三区**美女毛片 | 欧美福利电影网| 欧美成人精品一区| 亚洲第一毛片| 久久久久久九九九九| 裸体女人亚洲精品一区| 精品成人一区| 久久综合九色综合网站| 欧美成人中文字幕| 99热在这里有精品免费| 欧美日韩播放| 亚洲少妇自拍| 久久精品一区二区三区不卡| 国产精品影片在线观看| 欧美一区久久| 欧美高清在线视频| 一本色道精品久久一区二区三区| 亚洲欧美中文在线视频| 久久精品成人| 国产亚洲福利| 玖玖综合伊人| 一区二区国产精品| 久久久久成人精品免费播放动漫| 欧美精品一级| 亚洲性夜色噜噜噜7777| 久久久福利视频| 亚洲久色影视| 国产精品美女999| 欧美一二三区精品| 欧美国产综合| 午夜精品在线| 国产一区二区三区观看| 女人天堂亚洲aⅴ在线观看| 一区二区三区免费观看| 久久精品一区二区国产| 99精品欧美| 国内自拍一区| 欧美三级电影一区| 久久久久久久欧美精品| 夜夜嗨av一区二区三区四区| 久久久免费精品| 亚洲视频网站在线观看| 在线观看成人网| 国产精品户外野外| 欧美高清视频一二三区| 欧美一区二区精美| 一区二区三区回区在观看免费视频| 亚洲欧洲免费视频| 国产欧美在线观看| 欧美激情亚洲自拍| 久久久久久久综合日本| 国产精品99久久久久久人 | 在线日韩av片| 国产精品色网| 欧美日韩国产高清| 老巨人导航500精品| 香蕉久久一区二区不卡无毒影院| 一本色道久久88综合亚洲精品ⅰ | 亚洲最新视频在线| 欧美国产先锋| 免费亚洲一区二区| 性色av一区二区怡红| 99国产精品一区| 亚洲精品日韩在线| 在线国产精品一区| 韩国一区电影| 国产亚洲精久久久久久| 国产人成一区二区三区影院| 欧美色道久久88综合亚洲精品| 亚洲一级二级| 一区二区三区av| 夜夜夜精品看看| 日韩亚洲在线| 99国产精品久久久久久久| 欧美激情第10页| 欧美大色视频| 亚洲成人资源网| 欧美国产免费| 欧美激情视频一区二区三区免费| 中文欧美在线视频| 一区二区欧美在线| 艳妇臀荡乳欲伦亚洲一区| 99riav久久精品riav| 亚洲伦理精品| 在线一区亚洲| 亚洲欧美在线播放| 久久成人国产| 麻豆久久精品| 亚洲激情婷婷| 99国产精品国产精品久久| 亚洲老板91色精品久久| 一本一道久久综合狠狠老精东影业 | 久热精品在线视频| 久久最新视频| 亚洲国产精品久久久久| 亚洲国产精品传媒在线观看 | 99国内精品| 亚洲午夜电影在线观看| aa级大片欧美| 欧美一区二区精美| 久久精品成人一区二区三区| 久久免费99精品久久久久久| 欧美大片免费久久精品三p| 91久久精品一区| 一区二区三区四区国产| 欧美一区二区三区视频| 狼人天天伊人久久| 欧美三级免费| 黄色成人在线| 亚洲免费观看高清完整版在线观看| 国产精品亚洲аv天堂网| 国产一区二区三区电影在线观看| 欧美大片一区二区| 国产精品久久久久久av福利软件| 裸体丰满少妇做受久久99精品| 亚洲一区二区三区免费视频| 久久国产成人| 欧美日韩一区在线视频| 韩国精品主播一区二区在线观看| 欧美婷婷久久| 国产日韩视频一区二区三区| 91久久久久久国产精品| 亚洲欧美日韩在线播放| 母乳一区在线观看| 亚洲在线中文字幕| 欧美成年人网| 激情综合久久| 性欧美xxxx大乳国产app| 亚洲国产成人久久综合| 欧美一二三视频| 欧美性淫爽ww久久久久无| 91久久精品国产91久久|