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

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

?? mydes.pas

?? delphi 實現DES算法
?? PAS
字號:
unit MyDes;

interface
uses
  Dialogs,SysUtils;
const
  BitIP: array[0..63] of Byte =   //初始置換IP
    (57, 49, 41, 33, 25, 17,  9,  1,
     59, 51, 43, 35, 27, 19, 11,  3,
     61, 53, 45, 37, 29, 21, 13,  5,
     63, 55, 47, 39, 31, 23, 15,  7,
     56, 48, 40, 32, 24, 16,  8,  0,
     58, 50, 42, 34, 26, 18, 10,  2,
     60, 52, 44, 36, 28, 20, 12,  4,
     62, 54, 46, 38, 30, 22, 14,  6 );

  BitCP: array[0..63] of Byte = //逆置換IP-1
    ( 39,  7, 47, 15, 55, 23, 63, 31,
      38,  6, 46, 14, 54, 22, 62, 30,
      37,  5, 45, 13, 53, 21, 61, 29,
      36,  4, 44, 12, 52, 20, 60, 28,
      35,  3, 43, 11, 51, 19, 59, 27,
      34,  2, 42, 10, 50, 18, 58, 26,
      33,  1, 41,  9, 49, 17, 57, 25,
      32,  0, 40,  8, 48, 16, 56, 24 );

  BitExp: array[0..47] of Integer = // 位選擇函數E
    ( 31, 0, 1, 2, 3, 4, 3, 4, 5, 6, 7, 8, 7, 8, 9,10,
      11,12,11,12,13,14,15,16,15,16,17,18,19,20,19,20,
      21,22,23,24,23,24,25,26,27,28,27,28,29,30,31,0  );

  BitPM: array[0..31] of Byte =  //置換函數P
    ( 15, 6,19,20,28,11,27,16, 0,14,22,25, 4,17,30, 9,
       1, 7,23,13,31,26, 2, 8,18,12,29, 5,21,10, 3,24 );

  sBox: array[0..7] of array[0..63] of Byte =    //S盒
    ( ( 14,  4, 13,  1,  2, 15, 11,  8,  3, 10,  6, 12,  5,  9,  0,  7,
         0, 15,  7,  4, 14,  2, 13,  1, 10,  6, 12, 11,  9,  5,  3,  8,
         4,  1, 14,  8, 13,  6,  2, 11, 15, 12,  9,  7,  3, 10,  5,  0,
        15, 12,  8,  2,  4,  9,  1,  7,  5, 11,  3, 14, 10,  0,  6, 13 ),

      ( 15,  1,  8, 14,  6, 11,  3,  4,  9,  7,  2, 13, 12,  0,  5, 10,
         3, 13,  4,  7, 15,  2,  8, 14, 12,  0,  1, 10,  6,  9, 11,  5,
         0, 14,  7, 11, 10,  4, 13,  1,  5,  8, 12,  6,  9,  3,  2, 15,
        13,  8, 10,  1,  3, 15,  4,  2, 11,  6,  7, 12,  0,  5, 14,  9 ),

      ( 10,  0,  9, 14,  6,  3, 15,  5,  1, 13, 12,  7, 11,  4,  2,  8,
        13,  7,  0,  9,  3,  4,  6, 10,  2,  8,  5, 14, 12, 11, 15,  1,
        13,  6,  4,  9,  8, 15,  3,  0, 11,  1,  2, 12,  5, 10, 14,  7,
         1, 10, 13,  0,  6,  9,  8,  7,  4, 15, 14,  3, 11,  5,  2, 12 ),

      (  7, 13, 14,  3,  0,  6,  9, 10,  1,  2,  8,  5, 11, 12,  4, 15,
        13,  8, 11,  5,  6, 15,  0,  3,  4,  7,  2, 12,  1, 10, 14,  9,
        10,  6,  9,  0, 12, 11,  7, 13, 15,  1,  3, 14,  5,  2,  8,  4,
         3, 15,  0,  6, 10,  1, 13,  8,  9,  4,  5, 11, 12,  7,  2, 14 ),

      (  2, 12,  4,  1,  7, 10, 11,  6,  8,  5,  3, 15, 13,  0, 14,  9,
        14, 11,  2, 12,  4,  7, 13,  1,  5,  0, 15, 10,  3,  9,  8,  6,
         4,  2,  1, 11, 10, 13,  7,  8, 15,  9, 12,  5,  6,  3,  0, 14,
        11,  8, 12,  7,  1, 14,  2, 13,  6, 15,  0,  9, 10,  4,  5,  3 ),

      ( 12,  1, 10, 15,  9,  2,  6,  8,  0, 13,  3,  4, 14,  7,  5, 11,
        10, 15,  4,  2,  7, 12,  9,  5,  6,  1, 13, 14,  0, 11,  3,  8,
         9, 14, 15,  5,  2,  8, 12,  3,  7,  0,  4, 10,  1, 13, 11,  6,
         4,  3,  2, 12,  9,  5, 15, 10, 11, 14,  1,  7,  6,  0,  8, 13 ),

      (  4, 11,  2, 14, 15,  0,  8, 13,  3, 12,  9,  7,  5, 10,  6,  1,
        13,  0, 11,  7,  4,  9,  1, 10, 14,  3,  5, 12,  2, 15,  8,  6,
         1,  4, 11, 13, 12,  3,  7, 14, 10, 15,  6,  8,  0,  5,  9,  2,
         6, 11, 13,  8,  1,  4, 10,  7,  9,  5,  0, 15, 14,  2,  3, 12 ),

      ( 13,  2,  8,  4,  6, 15, 11,  1, 10,  9,  3, 14,  5,  0, 12,  7,
         1, 15, 13,  8, 10,  3,  7,  4, 12,  5,  6, 11,  0, 14,  9,  2,
         7, 11,  4,  1,  9, 12, 14,  2,  0,  6, 10, 13, 15,  3,  5,  8,
         2,  1, 14,  7,  4, 10,  8, 13, 15, 12,  9,  0,  3,  5,  6, 11 ) );

  BitPMC1: array[0..55] of Byte = //選擇置換PC-1
    ( 56, 48, 40, 32, 24, 16,  8,
       0, 57, 49, 41, 33, 25, 17,
       9,  1, 58, 50, 42, 34, 26,
      18, 10,  2, 59, 51, 43, 35,
      62, 54, 46, 38, 30, 22, 14,
       6, 61, 53, 45, 37, 29, 21,
      13,  5, 60, 52, 44, 36, 28,
      20, 12,  4, 27, 19, 11,  3 );

  BitPMC2: array[0..47] of Byte =//選擇置換PC-2
    ( 13, 16, 10, 23,  0,  4,
       2, 27, 14,  5, 20,  9,
      22, 18, 11,  3, 25,  7,
      15,  6, 26, 19, 12,  1,
      40, 51, 30, 36, 46, 54,
      29, 39, 50, 44, 32, 47,
      43, 48, 38, 55, 33, 52,
      45, 41, 49, 35, 28, 31 );
type
  TKeyByte = array[0..5] of Byte;
  TDesMode = (dmEncry, dmDecry);

  TMyDes = class(TObject)
  private
    { Private declarations }

    procedure initPermutation(var inData: array of Byte);
    procedure conversePermutation(var inData: array of Byte);
    procedure expand(inData: array of Byte; var outData: array of Byte);
    procedure permutation(var inData: array of Byte);
    function si(s,inByte: Byte): Byte;
    procedure permutationChoose1(inData: array of Byte;var outData: array of Byte);
    procedure permutationChoose2(inData: array of Byte;var outData: array of Byte);
    procedure cycleMove(var inData: array of Byte; bitMove: Byte);
    procedure makeKey(inKey: array of Byte; var outKey: array of TKeyByte);
    procedure encry(inData, subKey: array of Byte;var outData: array of Byte);
    procedure desData(desMode: TDesMode;inData: array of Byte; var outData: array of Byte);

  public
    function EncryStr(Str, Key: String): String;
    function DecryStr(Str, Key: String): String;
    function EncryStrHex(Str, Key: String): String;    //加密
    function DecryStrHex(StrHex, Key: String): String; //解密
    { Public declarations }
  end;



implementation
var
  subKey: array[0..15] of TKeyByte;
{ TMyDes }

procedure TMyDes.conversePermutation(var inData: array of Byte);
var
  newData: array[0..7] of Byte;
  i: Integer;
begin
  FillChar(newData, 8, 0);
  for i := 0 to 63 do
    if (inData[BitCP[i] shr 3] and (1 shl (7-(BitCP[i] and $07)))) <> 0 then
      newData[i shr 3] := newData[i shr 3] or (1 shl (7-(i and $07)));
  for i := 0 to 7 do inData[i] := newData[i];
end;


procedure TMyDes.cycleMove(var inData: array of Byte; bitMove: Byte);
var
  i: Integer;
begin
  for i := 0 to bitMove - 1 do
  begin
    inData[0] := (inData[0] shl 1) or (inData[1] shr 7);
    inData[1] := (inData[1] shl 1) or (inData[2] shr 7);
    inData[2] := (inData[2] shl 1) or (inData[3] shr 7);
    inData[3] := (inData[3] shl 1) or ((inData[0] and $10) shr 4);
    inData[0] := (inData[0] and $0f);
  end;
end;

function TMyDes.DecryStr(Str, Key: String): String;
var
  StrByte, OutByte, KeyByte: array[0..7] of Byte;
  StrResult: String;
  I, J: Integer;
begin
  if Length(Key) < 8 then
    while Length(Key) < 8 do Key := Key + Chr(0);

  for J := 0 to 7 do KeyByte[J] := Ord(Key[J + 1]);
  makeKey(keyByte, subKey);

  StrResult := '';

  for I := 0 to Length(Str) div 8 - 1 do
  begin
    for J := 0 to 7 do StrByte[J] := Ord(Str[I * 8 + J + 1]);
    desData(dmDecry, StrByte, OutByte);
    for J := 0 to 7 do
      StrResult := StrResult + Chr(OutByte[J]);
  end;
  while (Length(StrResult) > 0) and
    (Ord(StrResult[Length(StrResult)]) = 0) do
    Delete(StrResult, Length(StrResult), 1);
  Result := StrResult;
end;



function TMyDes.DecryStrHex(StrHex, Key: String): String;
  function HexToInt(Hex: String): Integer;
  var
    I, Res: Integer;
    ch: Char;
  begin
    Res := 0;
    for I := 0 to Length(Hex) - 1 do
    begin
      ch := Hex[I + 1];
      if (ch >= '0') and (ch <= '9') then
        Res := Res * 16 + Ord(ch) - Ord('0')
      else if (ch >= 'A') and (ch <= 'F') then
        Res := Res * 16 + Ord(ch) - Ord('A') + 10
      else if (ch >= 'a') and (ch <= 'f') then
        Res := Res * 16 + Ord(ch) - Ord('a') + 10
      else;
    end;
    Result := Res;
  end;

var
  Str, Temp: String;
  I: Integer;
begin
  Str := '';
  for I := 0 to Length(StrHex) div 2 - 1 do
  begin
    Temp := Copy(StrHex, I * 2 + 1, 2);
    Str := Str + Chr(HexToInt(Temp));
  end;
  Result := DecryStr(Str, Key);
end;


procedure TMyDes.desData(desMode: TDesMode; inData: array of Byte;
  var outData: array of Byte);
var
  i, j: Integer;
  temp, buf: array[0..3] of Byte;
begin
  for i := 0 to 7 do outData[i] := inData[i];
  initPermutation(outData);
  if desMode = dmEncry then
  begin
    for i := 0 to 15 do
    begin
      for j := 0 to 3 do temp[j] := outData[j];
      for j := 0 to 3 do outData[j] := outData[j + 4];
      encry(outData, subKey[i], buf);
      for j := 0 to 3 do outData[j + 4] := temp[j] xor buf[j];
    end;

    for j := 0 to 3 do temp[j] := outData[j + 4];
    for j := 0 to 3 do outData[j + 4] := outData[j];
    for j := 0 to 3 do outData[j] := temp[j];
  end
  else if desMode = dmDecry then
  begin
    for i := 15 downto 0 do
    begin
      for j := 0 to 3 do temp[j] := outData[j];
      for j := 0 to 3 do outData[j] := outData[j + 4];
      encry(outData, subKey[i], buf);
      for j := 0 to 3 do outData[j + 4] := temp[j] xor buf[j];
    end;
    for j := 0 to 3 do temp[j] := outData[j + 4];
    for j := 0 to 3 do outData[j + 4] := outData[j];
    for j := 0 to 3 do outData[j] := temp[j];
  end;
  conversePermutation(outData);
end;


procedure TMyDes.encry(inData, subKey: array of Byte;
  var outData: array of Byte);
var
  outBuf: array[0..5] of Byte;
  buf: array[0..7] of Byte;
  i: Integer;
begin
  expand(inData, outBuf);
  for i := 0 to 5 do outBuf[i] := outBuf[i] xor subKey[i];
  buf[0] := outBuf[0] shr 2;
  buf[1] := ((outBuf[0] and $03) shl 4) or (outBuf[1] shr 4);
  buf[2] := ((outBuf[1] and $0f) shl 2) or (outBuf[2] shr 6);
  buf[3] := outBuf[2] and $3f;
  buf[4] := outBuf[3] shr 2;
  buf[5] := ((outBuf[3] and $03) shl 4) or (outBuf[4] shr 4);
  buf[6] := ((outBuf[4] and $0f) shl 2) or (outBuf[5] shr 6);
  buf[7] := outBuf[5] and $3f;
  for i := 0 to 7 do buf[i] := si(i, buf[i]);
  for i := 0 to 3 do outBuf[i] := (buf[i*2] shl 4) or buf[i*2+1];
  permutation(outBuf);
  for i := 0 to 3 do outData[i] := outBuf[i];
end;


function TMyDes.EncryStr(Str, Key: String): String;
var
  StrByte, OutByte, KeyByte: array[0..7] of Byte;
  StrResult: String;
  I, J: Integer;
begin
  if (Length(Str) > 0) and (Ord(Str[Length(Str)]) = 0) then
    exit;
  if Length(Key) < 8 then
    while Length(Key) < 8 do Key := Key + Chr(0);
  while Length(Str) mod 8 <> 0 do Str := Str + Chr(0);

  for J := 0 to 7 do KeyByte[J] := Ord(Key[J + 1]);
  makeKey(keyByte, subKey);

  StrResult := '';

  for I := 0 to Length(Str) div 8 - 1 do
  begin
    for J := 0 to 7 do
      StrByte[J] := Ord(Str[I * 8 + J + 1]);
    desData(dmEncry, StrByte, OutByte);
    for J := 0 to 7 do
      StrResult := StrResult + Chr(OutByte[J]);
  end;

  Result := StrResult;
end;


function TMyDes.EncryStrHex(Str, Key: String): String;
var
  StrResult, TempResult, Temp: String;
  I: Integer;
begin
  TempResult := EncryStr(Str, Key);
  StrResult := '';
  for I := 0 to Length(TempResult) - 1 do
  begin
    Temp := Format('%x', [Ord(TempResult[I + 1])]);
    if Length(Temp) = 1 then Temp := '0' + Temp;
    StrResult := StrResult + Temp;
  end;
  Result := StrResult;
end;


procedure TMyDes.expand(inData: array of Byte; var outData: array of Byte);
var
  i: Integer;
begin
  FillChar(outData, 6, 0);
  for i := 0 to 47 do
    if (inData[BitExp[i] shr 3] and (1 shl (7-(BitExp[i] and $07)))) <> 0 then
      outData[i shr 3] := outData[i shr 3] or (1 shl (7-(i and $07)));
end;


procedure TMyDes.initPermutation(var inData: array of Byte);
var
  newData: array[0..7] of Byte;
  i: Integer;
begin
  FillChar(newData, 8, 0);
  for i := 0 to 63 do
    if (inData[BitIP[i] shr 3] and (1 shl (7- (BitIP[i] and $07)))) <> 0 then
      newData[i shr 3] := newData[i shr 3] or (1 shl (7-(i and $07)));
  for i := 0 to 7 do inData[i] := newData[i];
end;


procedure TMyDes.makeKey(inKey: array of Byte;
  var outKey: array of TKeyByte);
const
  bitDisplace: array[0..15] of Byte =
    ( 1,1,2,2, 2,2,2,2, 1,2,2,2, 2,2,2,1 );
var
  outData56: array[0..6] of Byte;
  outData: array[0..5] of Byte;
  key28l: array[0..3] of Byte;
  key28r: array[0..3] of Byte;
  key56o: array[0..6] of Byte;
  i,j,k: Integer;
begin
  permutationChoose1(inKey, outData56);

  key28l[0] := outData56[0] shr 4;
  key28l[1] := (outData56[0] shl 4) or (outData56[1] shr 4);
  key28l[2] := (outData56[1] shl 4) or (outData56[2] shr 4);
  key28l[3] := (outData56[2] shl 4) or (outData56[3] shr 4);
  key28r[0] := outData56[3] and $0f;
  key28r[1] := outData56[4];
  key28r[2] := outData56[5];
  key28r[3] := outData56[6];
  for j := 0 to 15 do
  begin
    i:=j;
    cycleMove(key28l, bitDisplace[i]);
    cycleMove(key28r, bitDisplace[i]);
    key56o[0] := (key28l[0] shl 4) or (key28l[1] shr 4);
    key56o[1] := (key28l[1] shl 4) or (key28l[2] shr 4);
    key56o[2] := (key28l[2] shl 4) or (key28l[3] shr 4);
    key56o[3] := (key28l[3] shl 4) or (key28r[0]);
    key56o[4] := key28r[1];
    key56o[5] := key28r[2];
    key56o[6] := key28r[3];
    permutationChoose2(key56o, outKey[j]);
  end;
end;


procedure TMyDes.permutation(var inData: array of Byte);
var
  newData: array[0..7] of Byte;
  i: Integer;
begin
  FillChar(newData, 8, 0);
  for i := 0 to 63 do
    if (inData[BitIP[i] shr 3] and (1 shl (7- (BitIP[i] and $07)))) <> 0 then
      newData[i shr 3] := newData[i shr 3] or (1 shl (7-(i and $07)));
  for i := 0 to 7 do inData[i] := newData[i];
end;

procedure TMyDes.permutationChoose1(inData: array of Byte;
  var outData: array of Byte);
var
  i: Integer;
begin
  FillChar(outData, 7, 0);
  for i := 0 to 55 do
    if (inData[BitPMC1[i] shr 3] and (1 shl (7-(BitPMC1[i] and $07)))) <> 0 then
      outData[i shr 3] := outData[i shr 3] or (1 shl (7-(i and $07)));
end;



procedure TMyDes.permutationChoose2(inData: array of Byte;
  var outData: array of Byte);
var
  i: Integer;
begin
  FillChar(outData, sizeof(outData), 0);
  for i := 0 to 47 do
    if (inData[BitPMC2[i] shr 3] and (1 shl (7-(BitPMC2[i] and $07)))) <> 0 then
      outData[i shr 3] := outData[i shr 3] or (1 shl (7-(i and $07)));
end;



function TMyDes.si(s, inByte: Byte): Byte;
var
  c: Byte;
begin
  c := (inByte and $20) or ((inByte and $1e) shr 1) or
    ((inByte and $01) shl 4);
  Result := (sBox[s][c] and $0f);
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
3d动漫精品啪啪一区二区竹菊| av一区二区三区| 欧美一级爆毛片| 日韩黄色免费网站| 日本久久电影网| 亚洲一二三四在线观看| 久久品道一品道久久精品| 99国产精品一区| 不卡一区在线观看| 亚洲成av人片一区二区三区| 日韩一区二区视频| 国产激情一区二区三区四区| 亚洲午夜三级在线| 亚洲三级小视频| 欧美日韩成人在线| 蜜臀久久久99精品久久久久久| 日韩美女久久久| 欧美日韩在线播放一区| 99r国产精品| 蜜桃传媒麻豆第一区在线观看| 亚洲国产精品高清| 精品免费国产二区三区| 91麻豆自制传媒国产之光| 中文字幕制服丝袜成人av | 老司机精品视频一区二区三区| 精品国产百合女同互慰| 精品一区精品二区高清| 国产精品天干天干在观线| 精品国产露脸精彩对白| 精品一区二区三区不卡| 一区二区视频在线看| 2021国产精品久久精品| 欧美一级黄色录像| 国产精品一级片| 日本在线不卡视频一二三区| 中文字幕一区二区三中文字幕| 91久久一区二区| va亚洲va日韩不卡在线观看| **性色生活片久久毛片| 中文字幕在线不卡国产视频| 91精品国产欧美日韩| 欧美疯狂性受xxxxx喷水图片| 国产精品自产自拍| 国产电影一区二区三区| 国产一区二区电影| 国产寡妇亲子伦一区二区| 欧美a级理论片| 国产丝袜欧美中文另类| 日韩欧美一区电影| 国产在线精品免费av| 极品销魂美女一区二区三区| 亚洲欧美日韩国产综合| 欧美日韩一区在线| 色婷婷国产精品| 欧美日韩国产精品成人| 色悠悠久久综合| 久久99精品久久久| 成人精品在线视频观看| 99精品视频一区二区三区| 免费的成人av| 亚洲男人天堂一区| 欧美私模裸体表演在线观看| 欧美一级搡bbbb搡bbbb| 欧美视频日韩视频| 制服丝袜日韩国产| 99久久婷婷国产综合精品电影| 成人午夜av电影| 日韩主播视频在线| 日韩精品亚洲专区| 日韩电影免费在线看| 国产乱人伦偷精品视频不卡| 国产精品―色哟哟| 午夜国产精品影院在线观看| 精品久久一区二区三区| 亚洲天堂成人网| 一区二区三区四区五区视频在线观看| 中文字幕在线观看一区| 综合亚洲深深色噜噜狠狠网站| 亚洲资源中文字幕| 自拍av一区二区三区| 亚洲不卡在线观看| 日韩专区欧美专区| 日日夜夜免费精品| 成人黄色电影在线| 欧美日本乱大交xxxxx| 欧美亚洲一区二区在线| 久久久久国产精品人| 亚洲最快最全在线视频| 国产精品免费久久久久| 亚洲欧洲无码一区二区三区| 亚洲精品日韩综合观看成人91| 免费精品视频在线| 婷婷国产在线综合| 粉嫩aⅴ一区二区三区四区| 午夜精彩视频在线观看不卡| 蜜桃一区二区三区在线观看| 99视频精品在线| 欧美大片国产精品| 亚洲一区二区在线免费观看视频 | 婷婷成人激情在线网| 日韩精品成人一区二区在线| 国内精品不卡在线| 欧美日本一道本在线视频| 国产揄拍国内精品对白| 色婷婷综合五月| 日本一区二区三区久久久久久久久不 | 日韩一区中文字幕| 国产精品久久久久久久久免费樱桃 | 日韩一区在线播放| 日韩精品电影在线| 国产精品中文字幕一区二区三区| 国产精品亚洲成人| 蜜桃av噜噜一区| 一本色道久久综合狠狠躁的推荐| 日韩三级伦理片妻子的秘密按摩| 国产欧美日产一区| 日本中文在线一区| 色老汉av一区二区三区| 欧美日韩精品久久久| 国产精品看片你懂得| 粉嫩欧美一区二区三区高清影视| 韩国在线一区二区| 久久综合九色综合欧美亚洲| 偷窥少妇高潮呻吟av久久免费| 国产精品入口麻豆九色| 蜜桃一区二区三区四区| 欧美一区二区视频在线观看2020| 亚洲欧美日韩国产另类专区| 久久99国产精品麻豆| 欧美欧美午夜aⅴ在线观看| 欧美一区三区四区| 日韩电影在线观看网站| 成人国产精品视频| 日韩一区国产二区欧美三区| 亚洲成人动漫在线免费观看| 91国产成人在线| 欧美丰满嫩嫩电影| 亚洲综合图片区| 成人午夜电影小说| 国产亚洲污的网站| 国产成人免费视频一区| 粉嫩在线一区二区三区视频| 精品国产一区a| 亚洲欧洲日本在线| 国产a视频精品免费观看| 91麻豆精品国产91久久久久久| 亚洲婷婷在线视频| 国产寡妇亲子伦一区二区| 欧美日韩在线免费视频| 蜜臀av性久久久久av蜜臀妖精| 成人精品一区二区三区四区| 亚洲精品中文在线观看| 色婷婷综合视频在线观看| 日韩一区二区在线看| 亚洲人成网站精品片在线观看| 99久久伊人精品| 亚洲精品免费在线播放| 久久99精品国产麻豆婷婷| 日韩精品一区二区三区视频| 美女国产一区二区三区| 欧美三级日本三级少妇99| 欧美大片顶级少妇| 成人午夜电影小说| 国产午夜久久久久| 国产91对白在线观看九色| 日韩久久免费av| 污片在线观看一区二区| 91精品国产综合久久精品| 午夜天堂影视香蕉久久| 日韩视频在线永久播放| 欧美日韩一级二级三级| 亚洲成人动漫在线观看| 日韩午夜激情免费电影| 亚洲高清在线精品| 欧美日韩精品专区| 久久久99精品久久| 丁香五精品蜜臀久久久久99网站| 久久久久久久久免费| 国产不卡视频在线观看| 日本一二三不卡| 久久精品视频一区二区| 欧美视频在线一区| 国内外成人在线| 亚洲另类春色校园小说| 成人av影视在线观看| 奇米影视7777精品一区二区| 精品一区二区三区久久久| 欧美激情一区二区在线| 色综合久久九月婷婷色综合| 亚洲福利一区二区| 欧美r级电影在线观看| 国产成人a级片| 一区二区三区高清在线| 欧美日韩国产大片| 三级一区在线视频先锋 | 亚洲欧洲成人av每日更新| 国产老妇另类xxxxx| 亚洲欧洲另类国产综合| 日韩欧美视频一区| 色综合天天天天做夜夜夜夜做|