亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rijndael.pas

?? wbs43open-src.zip 數字隱藏工具
?? PAS
字號:
{******************************************************************************}
{** A binary compatible implementation of Rijndael ****************************}
{******************************************************************************}
{** Written by David Barton (davebarton@bigfoot.com) **************************}
{** http://www.scramdisk.clara.net/ *******************************************}
{******************************************************************************}
unit Rijndael;

interface
{$I DCPcrypt.Inc}
uses
  {$IFDEF CFORM}Classes, Sysutils, {$ENDIF}DCPcrypt;

const
  BC= 4;
  MAXROUNDS= 14;

{$IFDEF CFORM}
type
  TDCP_rijndael= class(TDCP_blockcipher)
  protected
    IV, LB: array[0..15] of byte;
    numrounds: longint;
    rk, drk: array[0..MAXROUNDS,0..7] of DWord;
    procedure Encrypt(const InBlock; var OutBlock);
    procedure Decrypt(const InBlock; var OutBlock);
  public
    procedure Init(var Key; Size: longint; IVector: pointer); override;
    procedure Burn; override;
    procedure Reset; override;
    procedure EncryptECB(const InBlock; var OutBlock); override;
    procedure DecryptECB(const InBlock; var OutBlock); override;
    procedure EncryptCBC(const InData; var OutData; Size: longint); override;
    procedure DecryptCBC(const InData; var OutData; Size: longint); override;
    procedure EncryptCFB(const InData; var OutData; Size: longint); override;
    procedure DecryptCFB(const InData; var OutData; Size: longint); override;
    constructor Create(AOwner: TComponent); override;
  end;
{$ELSE}
type
  TRijndaelData= record
    IV, LB: array[0..15] of byte;
    numrounds: longint;
    rk, drk: array[0..MAXROUNDS,0..7] of DWord;
  end;

procedure RijndaelInit(var Data: TRijndaelData; var Key; Size: longint; IVector: pointer);
procedure RijndaelReset(var Data: TRijndaelData);
procedure RijndaelBurn(var Data:  TRijndaelData);
procedure RijndaelEncryptECB(var Data: TRijndaelData; const InBlock; var OutBlock);
procedure RijndaelDecryptECB(var Data: TRijndaelData; const InBlock; var OutBlock);
procedure RijndaelEncryptCBC(var Data: TRijndaelData; const InData; var OutData; Size: longint);
procedure RijndaelDecryptCBC(var Data: TRijndaelData; const InData; var OutData; Size: longint);
procedure RijndaelEncryptCFB(var Data: TRijndaelData; const InData; var OutData; Size: longint);
procedure RijndaelDecryptCFB(var Data: TRijndaelData; const InData; var OutData; Size: longint);
{$ENDIF}

{******************************************************************************}
{******************************************************************************}
implementation

{$I Rijndael.Inc}

const
  MAXBC= 8;
  MAXKC= 8;

{$IFDEF CFORM}
constructor TDCP_rijndael.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  fAlgorithm:= 'Rijndael';
  fBlockSize:= 128;
  fMaxKeySize:= 256;
  fID:= 9;
  Burn;
end;
{$ENDIF}

{$IFDEF CFORM}
procedure TDCP_rijndael.Encrypt(const InBlock; var OutBlock);
{$ELSE}
procedure RijndaelEncryptECB;
{$ENDIF}
var
  r: longint;
  temp: array[0..MAXBC-1,0..3] of byte;
  a: array[0..MAXBC,0..3] of byte;
begin
  {$IFNDEF CFORM}with Data do begin{$ENDIF}
  Move(InBlock,a,16);
  for r:= 0 to (numrounds-2) do
  begin
    PDWord(@temp[0])^:= PDWord(@a[0])^ xor rk[r,0];
    PDWord(@temp[1])^:= PDWord(@a[1])^ xor rk[r,1];
    PDWord(@temp[2])^:= PDWord(@a[2])^ xor rk[r,2];
    PDWord(@temp[3])^:= PDWord(@a[3])^ xor rk[r,3];
    PDWord(@a[0])^:= PDWord(@T1[temp[0,0]])^ xor
                     PDWord(@T2[temp[1,1]])^ xor
                     PDWord(@T3[temp[2,2]])^ xor
                     PDWord(@T4[temp[3,3]])^;
    PDWord(@a[1])^:= PDWord(@T1[temp[1,0]])^ xor
                     PDWord(@T2[temp[2,1]])^ xor
                     PDWord(@T3[temp[3,2]])^ xor
                     PDWord(@T4[temp[0,3]])^;
    PDWord(@a[2])^:= PDWord(@T1[temp[2,0]])^ xor
                     PDWord(@T2[temp[3,1]])^ xor
                     PDWord(@T3[temp[0,2]])^ xor
                     PDWord(@T4[temp[1,3]])^;
    PDWord(@a[3])^:= PDWord(@T1[temp[3,0]])^ xor
                     PDWord(@T2[temp[0,1]])^ xor
                     PDWord(@T3[temp[1,2]])^ xor
                     PDWord(@T4[temp[2,3]])^;
  end;
  PDWord(@temp[0])^:= PDWord(@a[0])^ xor rk[numrounds-1,0];
  PDWord(@temp[1])^:= PDWord(@a[1])^ xor rk[numrounds-1,1];
  PDWord(@temp[2])^:= PDWord(@a[2])^ xor rk[numrounds-1,2];
  PDWord(@temp[3])^:= PDWord(@a[3])^ xor rk[numrounds-1,3];
  a[0,0]:= T1[temp[0,0],1];
  a[0,1]:= T1[temp[1,1],1];
  a[0,2]:= T1[temp[2,2],1];
  a[0,3]:= T1[temp[3,3],1];
  a[1,0]:= T1[temp[1,0],1];
  a[1,1]:= T1[temp[2,1],1];
  a[1,2]:= T1[temp[3,2],1];
  a[1,3]:= T1[temp[0,3],1];
  a[2,0]:= T1[temp[2,0],1];
  a[2,1]:= T1[temp[3,1],1];
  a[2,2]:= T1[temp[0,2],1];
  a[2,3]:= T1[temp[1,3],1];
  a[3,0]:= T1[temp[3,0],1];
  a[3,1]:= T1[temp[0,1],1];
  a[3,2]:= T1[temp[1,2],1];
  a[3,3]:= T1[temp[2,3],1];
  PDWord(@a[0])^:= PDWord(@a[0])^ xor rk[numrounds,0];
  PDWord(@a[1])^:= PDWord(@a[1])^ xor rk[numrounds,1];
  PDWord(@a[2])^:= PDWord(@a[2])^ xor rk[numrounds,2];
  PDWord(@a[3])^:= PDWord(@a[3])^ xor rk[numrounds,3];
  Move(a,OutBlock,16);
  {$IFNDEF CFORM}end;{$ENDIF}
end;

{$IFDEF CFORM}
procedure TDCP_rijndael.Decrypt(const InBlock; var OutBlock);
{$ELSE}
procedure RijndaelDecryptECB;
{$ENDIF}
var
  r: longint;
  temp: array[0..MAXBC-1,0..3] of byte;
  a: array[0..MAXBC,0..3] of byte;
begin
  {$IFNDEF CFORM}with Data do begin{$ENDIF}
  Move(InBlock,a,16);
  for r:= NumRounds downto 2 do
  begin
    PDWord(@temp[0])^:= PDWord(@a[0])^ xor drk[r,0];
    PDWord(@temp[1])^:= PDWord(@a[1])^ xor drk[r,1];
    PDWord(@temp[2])^:= PDWord(@a[2])^ xor drk[r,2];
    PDWord(@temp[3])^:= PDWord(@a[3])^ xor drk[r,3];
    PDWord(@a[0])^:= PDWord(@T5[temp[0,0]])^ xor
                     PDWord(@T6[temp[3,1]])^ xor
                     PDWord(@T7[temp[2,2]])^ xor
                     PDWord(@T8[temp[1,3]])^;
    PDWord(@a[1])^:= PDWord(@T5[temp[1,0]])^ xor
                     PDWord(@T6[temp[0,1]])^ xor
                     PDWord(@T7[temp[3,2]])^ xor
                     PDWord(@T8[temp[2,3]])^;
    PDWord(@a[2])^:= PDWord(@T5[temp[2,0]])^ xor
                     PDWord(@T6[temp[1,1]])^ xor
                     PDWord(@T7[temp[0,2]])^ xor
                     PDWord(@T8[temp[3,3]])^;
    PDWord(@a[3])^:= PDWord(@T5[temp[3,0]])^ xor
                     PDWord(@T6[temp[2,1]])^ xor
                     PDWord(@T7[temp[1,2]])^ xor
                     PDWord(@T8[temp[0,3]])^;
  end;
  PDWord(@temp[0])^:= PDWord(@a[0])^ xor drk[1,0];
  PDWord(@temp[1])^:= PDWord(@a[1])^ xor drk[1,1];
  PDWord(@temp[2])^:= PDWord(@a[2])^ xor drk[1,2];
  PDWord(@temp[3])^:= PDWord(@a[3])^ xor drk[1,3];
  a[0,0]:= S5[temp[0,0]];
  a[0,1]:= S5[temp[3,1]];
  a[0,2]:= S5[temp[2,2]];
  a[0,3]:= S5[temp[1,3]];
  a[1,0]:= S5[temp[1,0]];
  a[1,1]:= S5[temp[0,1]];
  a[1,2]:= S5[temp[3,2]];
  a[1,3]:= S5[temp[2,3]];
  a[2,0]:= S5[temp[2,0]];
  a[2,1]:= S5[temp[1,1]];
  a[2,2]:= S5[temp[0,2]];
  a[2,3]:= S5[temp[3,3]];
  a[3,0]:= S5[temp[3,0]];
  a[3,1]:= S5[temp[2,1]];
  a[3,2]:= S5[temp[1,2]];
  a[3,3]:= S5[temp[0,3]];
  PDWord(@a[0])^:= PDWord(@a[0])^ xor drk[0,0];
  PDWord(@a[1])^:= PDWord(@a[1])^ xor drk[0,1];
  PDWord(@a[2])^:= PDWord(@a[2])^ xor drk[0,2];
  PDWord(@a[3])^:= PDWord(@a[3])^ xor drk[0,3];
  Move(a,OutBlock,16);
  {$IFNDEF CFORM}end;{$ENDIF}
end;

procedure InvMixColumn(a: PByteArray; BC: byte);
var
  j: longint;
begin
  for j:= 0 to (BC-1) do
    PDWord(@(a^[j*4]))^:= PDWord(@U1[a^[j*4+0]])^ xor
                       PDWord(@U2[a^[j*4+1]])^ xor
                       PDWord(@U3[a^[j*4+2]])^ xor
                       PDWord(@U4[a^[j*4+3]])^;
end;

{$IFDEF CFORM}
procedure TDCP_rijndael.Init(var Key; Size: longint; IVector: pointer);
{$ELSE}
procedure RijndaelInit;
{$ENDIF}
var
  KC, ROUNDS, j, r, t, rconpointer: longint;
  tk: array[0..MAXKC-1,0..3] of byte;
begin
  {$IFDEF CFORM}
  if fInitialized then
    Burn;
  if (Size> fMaxKeySize) or (Size<= 0) or ((Size mod 8)<> 0) then
    raise Exception.Create(Format('Rijndael: Invalid key size - %d',[Size]));
  {$ELSE}
  if (Size> 256) or (Size<= 0) or ((Size mod 8)<> 0) then
    Exit;
  with Data do begin
  {$ENDIF}

  Size:= Size div 8;

  FillChar(tk,Sizeof(tk),0);
  Move(Key,tk,Size);
  if Size<= 16 then
  begin
    KC:= 4;
    Rounds:= 10;
  end
  else if Size<= 24 then
  begin
    KC:= 6;
    Rounds:= 12;
  end
  else
  begin
    KC:= 8;
    Rounds:= 14;
  end;
  numrounds:= rounds;
  r:= 0;
  t:= 0;
  j:= 0;
  while (j< KC) and (r< (rounds+1)) do
  begin
    while (j< KC) and (t< BC) do
    begin
      rk[r,t]:= PDWord(@tk[j])^;
      Inc(j);
      Inc(t);
    end;
    if t= BC then
    begin
      t:= 0;
      Inc(r);
    end;
  end;
  rconpointer:= 0;
  while (r< (rounds+1)) do
  begin
    tk[0,0]:= tk[0,0] xor S[tk[KC-1,1]];
    tk[0,1]:= tk[0,1] xor S[tk[KC-1,2]];
    tk[0,2]:= tk[0,2] xor S[tk[KC-1,3]];
    tk[0,3]:= tk[0,3] xor S[tk[KC-1,0]];
    tk[0,0]:= tk[0,0] xor rcon[rconpointer];
    Inc(rconpointer);
    if KC<> 8 then
    begin
      for j:= 1 to (KC-1) do
        PDWord(@tk[j])^:= PDWord(@tk[j])^ xor PDWord(@tk[j-1])^;
    end
    else
    begin
      for j:= 1 to ((KC div 2)-1) do
        PDWord(@tk[j])^:= PDWord(@tk[j])^ xor PDWord(@tk[j-1])^;
      tk[KC div 2,0]:= tk[KC div 2,0] xor S[tk[KC div 2 - 1,0]];
      tk[KC div 2,1]:= tk[KC div 2,1] xor S[tk[KC div 2 - 1,1]];
      tk[KC div 2,2]:= tk[KC div 2,2] xor S[tk[KC div 2 - 1,2]];
      tk[KC div 2,3]:= tk[KC div 2,3] xor S[tk[KC div 2 - 1,3]];
      for j:= ((KC div 2) + 1) to (KC-1) do
        PDWord(@tk[j])^:= PDWord(@tk[j])^ xor PDWord(@tk[j-1])^;
    end;
    j:= 0;
    while (j< KC) and (r< (rounds+1)) do
    begin
      while (j< KC) and (t< BC) do
      begin
        rk[r,t]:= PDWord(@tk[j])^;
        Inc(j);
        Inc(t);
      end;
      if t= BC then
      begin
        Inc(r);
        t:= 0;
      end;
    end;
  end;
  Move(rk,drk,Sizeof(rk));
  for r:= 1 to (numrounds-1) do
    InvMixColumn(@drk[r],BC);

  if IVector= nil then
  begin
    FillChar(IV,Sizeof(IV),$FF);
    {$IFDEF CFORM}Encrypt(IV,IV){$ELSE}RijndaelEncryptECB(Data,IV,IV){$ENDIF};
    Move(IV,LB,Sizeof(LB));
  end
  else
  begin
    Move(IVector^,IV,Sizeof(IV));
    Move(IV,LB,Sizeof(IV));
  end;
  {$IFDEF CFORM}
  fInitialized:= true;
  {$ELSE}end;{$ENDIF}
end;

{$IFDEF CFORM}
procedure TDCP_rijndael.Burn;
{$ELSE}
procedure RijndaelBurn;
{$ENDIF}
begin
  {$IFNDEF CFORM}with Data do begin{$ENDIF}
  FillChar(rk,Sizeof(rk),$FF);
  FillChar(drk,Sizeof(drk),$FF);
  FillChar(IV,Sizeof(IV),$FF);
  FillChar(LB,Sizeof(LB),$FF);
  NumRounds:= 0;
  {$IFDEF CFORM}
  fInitialized:= false;
  {$ELSE}end;{$ENDIF}
end;

{$IFDEF CFORM}
procedure TDCP_rijndael.Reset;
{$ELSE}
procedure RijndaelReset;
{$ENDIF}
begin
  {$IFNDEF CFORM}with Data do{$ENDIF}
  Move(IV,LB,Sizeof(LB));
end;

{$IFDEF CFORM}
procedure TDCP_rijndael.EncryptECB(const InBlock; var OutBlock);
begin
  if not fInitialized then
    raise Exception.Create('Rijndael: Not initialized');
  Encrypt(InBlock,OutBlock);
end;

procedure TDCP_rijndael.DecryptECB(const InBlock; var OutBlock);
begin
  if not fInitialized then
    raise Exception.Create('Rijndael: Not initialized');
  Decrypt(InBlock,OutBlock);
end;
{$ENDIF}

{$IFDEF CFORM}
procedure TDCP_rijndael.EncryptCBC(const InData; var OutData; Size: longint);
{$ELSE}
procedure RijndaelEncryptCBC;
{$ENDIF}
var
  TB: array[0..15] of byte;
  i: longint;
begin
  {$IFDEF CFORM}
  if not fInitialized then
    raise Exception.Create('Rijndael: Not initialized');
  {$ELSE}with Data do begin{$ENDIF}
  for i:= 1 to (Size div 16) do
  begin
    XorBlock(pointer(longint(@InData)+((i-1)*16)),@LB,@TB,Sizeof(TB));
    {$IFDEF CFORM}Encrypt(TB,TB){$ELSE}RijndaelEncryptECB(Data,TB,TB){$ENDIF};
    Move(TB,pointer(longint(@OutData)+((i-1)*16))^,Sizeof(TB));
    Move(TB,LB,Sizeof(TB));
  end;
  if (Size mod 16)<> 0 then
  begin
    {$IFDEF CFORM}Encrypt(LB,TB){$ELSE}RijndaelEncryptECB(Data,LB,TB){$ENDIF};
    XorBlock(@TB,@pointer(longint(@InData)+Size-(Size mod 16))^,@pointer(longint(@OutData)+Size-(Size mod 16))^,Size mod 16);
  end;
  FillChar(TB,Sizeof(TB),$FF);
  {$IFNDEF CFORM}end;{$ENDIF}
end;

{$IFDEF CFORM}
procedure TDCP_rijndael.DecryptCBC(const InData; var OutData; Size: longint);
{$ELSE}
procedure RijndaelDecryptCBC;
{$ENDIF}
var
  TB: array[0..15] of byte;
  i: longint;
begin
  {$IFDEF CFORM}
  if not fInitialized then
    raise Exception.Create('Rijndael: Not initialized');
  {$ELSE}with Data do begin{$ENDIF}
  for i:= 1 to (Size div 16) do
  begin
    Move(pointer(longint(@InData)+((i-1)*16))^,TB,Sizeof(TB));
    {$IFDEF CFORM}
    Decrypt(pointer(longint(@InData)+((i-1)*16))^,pointer(longint(@OutData)+((i-1)*16))^);
    {$ELSE}
    RijndaelDecryptECB(Data,pointer(longint(@InData)+((i-1)*16))^,pointer(longint(@OutData)+((i-1)*16))^);
    {$ENDIF}
    XorBlock(@LB,pointer(longint(@OutData)+((i-1)*16)),pointer(longint(@OutData)+((i-1)*16)),Sizeof(TB));
    Move(TB,LB,Sizeof(TB));
  end;
  if (Size mod 16)<> 0 then
  begin
    {$IFDEF CFORM}Encrypt(LB,TB){$ELSE}RijndaelEncryptECB(Data,LB,TB){$ENDIF};
    XorBlock(@TB,@pointer(longint(@InData)+Size-(Size mod 16))^,@pointer(longint(@OutData)+Size-(Size mod 16))^,Size mod 16);
  end;
  FillChar(TB,Sizeof(TB),$FF);
  {$IFNDEF CFORM}end;{$ENDIF}
end;

{$IFDEF CFORM}
procedure TDCP_rijndael.EncryptCFB(const InData; var OutData; Size: longint);
{$ELSE}
procedure RijndaelEncryptCFB;
{$ENDIF}
var
  i: longint;
  TB: array[0..15] of byte;
begin
  {$IFDEF CFORM}
  if not fInitialized then
    raise Exception.Create('Rijndael: Not initialized');
  {$ELSE}with Data do begin{$ENDIF}
  for i:= 0 to Size-1 do
  begin
    {$IFDEF CFORM}Encrypt(LB,TB){$ELSE}RijndaelEncryptECB(Data,LB,TB){$ENDIF};
    PByteArray(@OutData)^[i]:= PByteArray(@InData)^[i] xor TB[0];
    Move(LB[1],LB[0],15);
    LB[15]:= PByteArray(@OutData)^[i];
  end;
  {$IFNDEF CFORM}end;{$ENDIF}
end;

{$IFDEF CFORM}
procedure TDCP_rijndael.DecryptCFB(const InData; var OutData; Size: longint);
{$ELSE}
procedure RijndaelDecryptCFB;
{$ENDIF}
var
  i: longint;
  TB: array[0..15] of byte;
  b: byte;
begin
  {$IFDEF CFORM}
  if not fInitialized then
    raise Exception.Create('Rijndael: Not initialized');
  {$ELSE}with Data do begin{$ENDIF}
  for i:= 0 to Size-1 do
  begin
    b:= PByteArray(@InData)^[i];
    {$IFDEF CFORM}Encrypt(LB,TB){$ELSE}RijndaelEncryptECB(Data,LB,TB){$ENDIF};
    PByteArray(@OutData)^[i]:= PByteArray(@InData)^[i] xor TB[0];
    Move(LB[1],LB[0],15);
    LB[15]:= b;
  end;
  {$IFNDEF CFORM}end;{$ENDIF}
end;


end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性色综合网| 午夜欧美视频在线观看| 午夜电影久久久| 91福利在线导航| 亚洲韩国精品一区| 在线电影院国产精品| 另类小说综合欧美亚洲| 精品av综合导航| 成人午夜av电影| 亚洲三级在线播放| 久久蜜桃av一区二区天堂| 亚洲自拍偷拍综合| 亚洲精品在线观看网站| 欧美日韩三级在线| 精品少妇一区二区| 亚洲女同女同女同女同女同69| 综合久久久久久久| 亚洲.国产.中文慕字在线| 国内精品不卡在线| av中文字幕不卡| 欧美日本韩国一区| 日韩一区二区电影| 欧美一级日韩不卡播放免费| 久久久久久亚洲综合| 95精品视频在线| 日韩精品一二区| 久久精品亚洲国产奇米99| 91在线视频在线| 天天色 色综合| 国产欧美综合在线观看第十页| 成人av先锋影音| 国产一区日韩二区欧美三区| 91福利在线导航| 91福利小视频| 欧美电视剧免费观看| 中文字幕在线不卡一区二区三区| 天天影视涩香欲综合网| 国产精品综合一区二区| 欧美一级黄色片| 夜夜嗨av一区二区三区| 国产经典欧美精品| 经典三级视频一区| 日韩久久一区二区| 久久影音资源网| 欧美理论在线播放| 不卡视频一二三| 人人精品人人爱| 亚洲美女偷拍久久| 国产视频在线观看一区二区三区 | 国产成人在线看| 一个色综合av| 国产亚洲午夜高清国产拍精品| 欧美性一二三区| 99久久综合狠狠综合久久| 日韩精彩视频在线观看| 欧美日韩免费一区二区三区 | 国产一区欧美日韩| 国产精品久久久久久久久快鸭 | 天堂午夜影视日韩欧美一区二区| 欧美日韩国产成人在线91| 亚洲精品你懂的| 精品国产一区二区精华| 99re亚洲国产精品| 久久国产精品无码网站| 中文字幕乱码日本亚洲一区二区 | 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美激情一区二区在线| 精品乱人伦小说| 日韩视频在线观看一区二区| 精品一区二区综合| 亚洲福利视频一区二区| 中文字幕成人av| 国产日韩高清在线| 26uuu国产日韩综合| 日韩欧美国产wwwww| 91精品国产欧美一区二区18| 精品视频一区二区不卡| 色先锋aa成人| 欧美日韩国产区一| 91免费精品国自产拍在线不卡| 国产清纯美女被跳蛋高潮一区二区久久w| 在线观看日韩毛片| 欧美日韩在线免费视频| 在线电影院国产精品| 欧美在线你懂的| 91麻豆精品国产自产在线| 91麻豆精品国产91久久久资源速度| 日韩欧美亚洲国产另类| 精品成人在线观看| www.成人网.com| 色8久久精品久久久久久蜜| 91精品国产综合久久国产大片| 日韩欧美亚洲另类制服综合在线| 精品国产露脸精彩对白| 中文字幕av资源一区| 亚洲美女视频在线观看| 亚洲一二三区在线观看| 国产麻豆91精品| 欧美日韩你懂得| 午夜成人免费视频| 美女精品自拍一二三四| 福利一区二区在线观看| 一本久久综合亚洲鲁鲁五月天| 日韩欧美在线不卡| 亚洲精品五月天| 久久久亚洲欧洲日产国码αv| 中文字幕中文字幕一区二区| 黄页网站大全一区二区| 欧美一区二区三区免费| 亚洲bt欧美bt精品777| 精品视频在线免费看| 精品久久久网站| 狠狠v欧美v日韩v亚洲ⅴ| 日韩手机在线导航| 九九九久久久精品| 亚洲国产成人午夜在线一区| 波多野结衣的一区二区三区| 欧美精品一区二区三区视频| 精品中文字幕一区二区小辣椒| 欧美放荡的少妇| 免费观看在线色综合| 日韩免费看的电影| 亚洲色图视频网| 91在线观看成人| 亚洲欧美日本在线| 欧美精品在线视频| 美女在线观看视频一区二区| 日韩三级视频在线看| 久久91精品国产91久久小草| 精品国产自在久精品国产| 成人午夜视频免费看| 青青草国产精品97视觉盛宴| 精品国产一二三区| 美国欧美日韩国产在线播放| 欧美三级电影网| 午夜精品久久久久久久久久| 91麻豆免费看| 免费观看在线综合| 国产亚洲精品精华液| 成人高清在线视频| 亚洲最新视频在线观看| 欧美精品v国产精品v日韩精品| 国内精品写真在线观看| 亚洲精品成人悠悠色影视| 欧美大片拔萝卜| 色婷婷精品大视频在线蜜桃视频| 日本视频一区二区三区| 国产精品乱码一区二三区小蝌蚪| 欧美一区二区啪啪| 91网站在线观看视频| 国产成人免费网站| 亚洲精品视频一区二区| 在线中文字幕一区二区| 日本一二三不卡| 国产精品久久毛片| 久久综合色8888| 亚洲成在人线在线播放| 婷婷激情综合网| 欧美日本韩国一区二区三区视频| 另类人妖一区二区av| 日韩avvvv在线播放| 日本成人超碰在线观看| 午夜激情一区二区| 日韩高清欧美激情| 日韩精品1区2区3区| 亚洲天堂成人在线观看| 亚洲欧洲综合另类| 亚洲免费观看高清完整| 国产农村妇女毛片精品久久麻豆| 精品对白一区国产伦| 日韩视频一区二区在线观看| 欧美sm美女调教| 久久久午夜电影| 亚洲一区二区av在线| 成人欧美一区二区三区| 美女久久久精品| 色偷偷成人一区二区三区91| 欧美哺乳videos| 悠悠色在线精品| 99麻豆久久久国产精品免费优播| 日韩欧美一区二区久久婷婷| 亚洲日本在线天堂| 国v精品久久久网| 日韩欧美一区二区免费| 性做久久久久久| 欧美日韩午夜精品| 亚洲午夜电影在线| 91色porny在线视频| 国产目拍亚洲精品99久久精品| 免费在线观看一区| 日本乱人伦aⅴ精品| 国产日韩欧美一区二区三区乱码| 亚洲国产精品人人做人人爽| 成人h动漫精品| 国产日产欧美一区二区视频| 日本不卡123| 在线精品视频免费观看| 国产精品少妇自拍| 国产伦理精品不卡| 欧美精品一区二区三区视频|