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

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

?? des.pas

?? DES加密算法,是一個很著名的加密算法
?? PAS
?? 第 1 頁 / 共 2 頁
字號:

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

function 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; 

procedure 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 permutationChoose2(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[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; 

procedure 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; 

procedure 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; 
  key28l: array[0..3] of Byte; 
  key28r: array[0..3] of Byte; 
  key56o: array[0..6] of Byte; 
  i: 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 i := 0 to 15 do 
  begin 
    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[i]); 
  end; 
end; 

procedure 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]; 
                                                // outBuf       xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx 
  buf[0] := outBuf[0] shr 2;                                  //xxxxxx - > 2 
  buf[1] := ((outBuf[0] and $03) shl 4) or (outBuf[1] shr 4); // 4  <- xx xxxx - > 4 
  buf[2] := ((outBuf[1] and $0f) shl 2) or (outBuf[2] shr 6); //        2  <- xxxx xx - > 6 
  buf[3] := outBuf[2] and $3f;                                //                    xxxxxx 
  buf[4] := outBuf[3] shr 2;                                  //                           xxxxxx 
  buf[5] := ((outBuf[3] and $03) shl 4) or (outBuf[4] shr 4); //                                 xx xxxx 
  buf[6] := ((outBuf[4] and $0f) shl 2) or (outBuf[5] shr 6); //                                        xxxx xx 
  buf[7] := outBuf[5] and $3f;                                //                                               xxxxxx 
  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; 

procedure desData(desMode: TDesMode; 
  inData: array of Byte; var outData: array of Byte); 
// inData, outData 都為8Bytes,否則出錯 
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];                 //temp = Ln 
      for j := 0 to 3 do outData[j] := outData[j + 4];         //Ln+1 = Rn 
      encry(outData, subKey[i], buf);                           //Rn ==Kn== > buf 
      for j := 0 to 3 do outData[j + 4] := temp[j] xor buf[j];  //Rn+1 = Ln^buf 
    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; 

////////////////////////////////////////////////////////////// 

function 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 
    raise Exception.Create( 'Error: the last char is NULL char. '); 
  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 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 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; 

function 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 raise Exception.Create( 'Error: not a Hex String '); 
    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; 

end. 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜视频在线观看一区二区三区 | 国产日产欧产精品推荐色| 国产欧美一区二区精品性| 丝袜脚交一区二区| 东方aⅴ免费观看久久av| 91精品在线观看入口| 激情综合五月天| 色综合网色综合| 欧美精品一区二区三区在线播放 | 国产成人免费在线视频| 欧美日韩在线直播| 亚洲色图欧美偷拍| 大尺度一区二区| www国产精品av| 久久精品国产久精国产| 欧美日韩1234| 亚洲一二三区在线观看| 色综合中文综合网| 亚洲美女视频一区| 99久久精品免费精品国产| 久久久久久亚洲综合影院红桃| 日韩国产欧美在线视频| 91久久精品一区二区三区| 国产精品不卡在线| 成人免费毛片嘿嘿连载视频| 国产亚洲欧美一级| 国产一区二区三区av电影| 精品欧美黑人一区二区三区| 久久se精品一区二区| 日韩视频免费直播| 麻豆久久久久久久| 欧美成人video| 韩国午夜理伦三级不卡影院| 亚洲精品一区二区三区影院| 老司机精品视频一区二区三区| 制服丝袜成人动漫| 麻豆精品在线观看| 精品91自产拍在线观看一区| 精品一区二区久久久| 久久青草国产手机看片福利盒子 | 亚洲永久精品大片| 欧美亚日韩国产aⅴ精品中极品| 亚洲国产成人私人影院tom| 成人午夜电影网站| 亚洲色图视频网| 欧美日韩在线一区二区| 天天综合网 天天综合色| 91精品国产91久久久久久一区二区 | 精品美女在线播放| 高清国产一区二区| 亚洲九九爱视频| 亚洲国产精品黑人久久久| 国产精品高清亚洲| 91尤物视频在线观看| 亚洲高清三级视频| 日韩精品中文字幕在线一区| 狠狠狠色丁香婷婷综合久久五月| 久久久av毛片精品| 99久久免费视频.com| 亚洲图片欧美综合| 26uuu国产电影一区二区| 成人aaaa免费全部观看| 亚洲已满18点击进入久久| 777精品伊人久久久久大香线蕉| 久久精品72免费观看| 中文字幕制服丝袜成人av| 欧美乱妇15p| 风间由美一区二区av101 | 精品sm捆绑视频| 波多野结衣一区二区三区 | 福利一区二区在线| 亚洲国产欧美一区二区三区丁香婷| 日韩视频免费观看高清完整版在线观看 | 亚洲成在人线在线播放| 日韩欧美国产1| 波多野结衣精品在线| 看片的网站亚洲| 亚洲精品视频在线观看网站| 欧美精品久久99久久在免费线| 国产成人在线电影| 亚洲精品美国一| 久久精品亚洲一区二区三区浴池 | 欧美在线制服丝袜| 精品一区二区免费视频| 亚洲宅男天堂在线观看无病毒| 91麻豆精品91久久久久同性| 99麻豆久久久国产精品免费优播| 美女视频第一区二区三区免费观看网站| 国产欧美日韩精品一区| 日韩欧美在线网站| 欧美视频在线一区二区三区 | 欧亚一区二区三区| 丁香亚洲综合激情啪啪综合| 蜜芽一区二区三区| 自拍偷自拍亚洲精品播放| 精品日韩欧美一区二区| 欧美色中文字幕| 色老汉av一区二区三区| 国产成人一级电影| 精品在线你懂的| 日本最新不卡在线| 亚洲国产成人porn| 奇米一区二区三区| 一区二区不卡在线播放 | 日韩av午夜在线观看| 亚洲欧美日韩综合aⅴ视频| 国产亚洲精品bt天堂精选| 精品国精品国产尤物美女| 欧美日韩精品一区二区| 欧美视频一区在线| 欧美中文字幕一区二区三区| 色婷婷久久一区二区三区麻豆| 粉嫩aⅴ一区二区三区四区| 韩日欧美一区二区三区| 久久精品国产久精国产爱| 久久精品久久精品| 久久99精品久久久久久| 激情五月播播久久久精品| 狠狠色丁香久久婷婷综合丁香| 日韩成人一区二区三区在线观看| 日韩成人精品在线| 麻豆91在线看| 国产成人精品亚洲午夜麻豆| 不卡的av中国片| 91久久精品国产91性色tv| 欧美色图在线观看| 日韩一区二区在线播放| 精品国产一区二区三区不卡| 久久女同互慰一区二区三区| 亚洲国产精品ⅴa在线观看| 成人免费一区二区三区在线观看| 一区av在线播放| 日韩电影免费在线看| 亚洲图片欧美色图| 日韩制服丝袜先锋影音| 韩国v欧美v亚洲v日本v| 大尺度一区二区| 欧美色图第一页| 欧美变态tickle挠乳网站| 国产欧美久久久精品影院| 亚洲gay无套男同| 久久国产综合精品| 国产不卡视频在线观看| 日本精品视频一区二区三区| 666欧美在线视频| 国产日本欧美一区二区| 一区二区三区中文字幕| 天天色图综合网| 丰满少妇久久久久久久| 欧美日韩视频在线第一区| 亚洲精品在线观| 一区二区在线观看不卡| 免费久久精品视频| 91在线观看美女| 精品人伦一区二区色婷婷| 亚洲激情在线激情| 精品一区二区影视| 欧美中文字幕一区| 久久久国产精华| 天使萌一区二区三区免费观看| 精品一区二区三区在线播放| 高清久久久久久| 6080日韩午夜伦伦午夜伦| 欧美激情一区二区三区| 日本亚洲天堂网| 99久久精品免费看| 精品动漫一区二区三区在线观看| 一区二区三区免费观看| 丰满亚洲少妇av| 精品乱人伦小说| 亚洲成av人片在线| 91丨九色丨尤物| 国产视频在线观看一区二区三区| 午夜精品久久久久久久久久| 99久久国产综合精品麻豆| 精品国产乱码久久| 天天综合日日夜夜精品| 一本大道av伊人久久综合| 国产欧美一区二区三区在线看蜜臀 | 精品人在线二区三区| 亚洲一区二区影院| 97国产精品videossex| 国产欧美日韩激情| 韩国一区二区三区| 日韩精品一区国产麻豆| 天天综合天天综合色| 欧美视频一区二区| 亚洲综合在线五月| 日本精品免费观看高清观看| 亚洲国产精品黑人久久久| 国产精品影音先锋| 久久色在线观看| 极品少妇xxxx精品少妇| 日韩免费高清电影| 麻豆精品精品国产自在97香蕉| 777a∨成人精品桃花网| 日本不卡中文字幕| 日韩三级电影网址| 九九在线精品视频| 久久综合色婷婷|