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

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

?? unit1.~pas

?? DES算法完整源碼與調用方法 DES算法完整源碼與調用方法
?? ~PAS
?? 第 1 頁 / 共 2 頁
字號:
///////////////////////////////////////////////////////////////////////////////
                         //Des DEMO V1.0//
                          //作者:ksaiy//
//歡迎使用由ksaiy制作的DES加密算法演示程序,此算法為標準的DES算法,你可以根據的
//的自己需要進行變形。具體怎么操作可以登錄我們的網站查詢詳細的資料。我們專門為軟
//件開發者提供軟件加密安全測試服務和軟件加密解決方案,具體的可以參看我們的網站上
//的資料。我們的網站:http://www.ksaiy.com  http://www.magicoa.com
//技術支持:ksaiy@sina.com 在線QQ:40188696 UC:934155
                            //End //

                  //注意:轉載請保留以上信息。//                            
///////////////////////////////////////////////////////////////////////////////
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  TKeyByte = array[0..5] of Byte;
  TDesMode = (dmEncry, dmDecry);

  function EncryStr(Str, Key: String): String;
  function DecryStr(Str, Key: String): String;
  function EncryStrHex(Str, Key: String): String;
  function DecryStrHex(StrHex, Key: String): String;
  
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 );

var
  Form1: TForm1;
  subKey: array[0..15] of TKeyByte;  

implementation

{$R *.dfm}

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩影院免费视频| 日韩欧美中文一区| 亚洲同性同志一二三专区| 国产一区二区伦理片| 国产日本亚洲高清| 波多野洁衣一区| 一区二区三区中文字幕精品精品| 色哟哟在线观看一区二区三区| 一区二区三区四区精品在线视频| 在线欧美日韩国产| 美女免费视频一区二区| 国产亚洲午夜高清国产拍精品| 成人小视频免费观看| 亚洲综合视频在线观看| 日韩一级黄色片| 成人av电影免费在线播放| 亚洲影视在线观看| 久久综合九色综合久久久精品综合| 国产91对白在线观看九色| 亚洲精品乱码久久久久久久久| 7777精品伊人久久久大香线蕉的| 九九精品一区二区| 一区二区三区四区在线| 日韩欧美一卡二卡| 91视频.com| 精品一区精品二区高清| 亚洲乱码精品一二三四区日韩在线| 欧美一区二区三区视频在线| 福利91精品一区二区三区| 亚洲va欧美va人人爽午夜| 久久久久久亚洲综合| 在线观看亚洲成人| 国产寡妇亲子伦一区二区| 亚洲影视在线观看| 国产精品久久久久久户外露出 | 国产一区二区三区国产| 自拍偷拍亚洲综合| 日韩精品一区二区三区视频在线观看| 91免费版pro下载短视频| 久久精品国产亚洲一区二区三区| 亚洲日本青草视频在线怡红院| 日韩久久免费av| 欧美午夜精品理论片a级按摩| 国产成人99久久亚洲综合精品| 午夜久久久久久久久| 亚洲视频一区二区在线| 久久先锋资源网| 4438x成人网最大色成网站| 一本一道久久a久久精品综合蜜臀| 国产一区二区影院| 美女网站一区二区| 五月婷婷激情综合| 亚洲尤物在线视频观看| 18涩涩午夜精品.www| 国产亚洲精品aa| 337p日本欧洲亚洲大胆精品| 欧美视频中文一区二区三区在线观看| 不卡的av电影| 成人自拍视频在线观看| 国产精品99久久久久久久女警| 日本不卡免费在线视频| 午夜国产精品影院在线观看| 亚洲一区欧美一区| 一级中文字幕一区二区| 18欧美乱大交hd1984| 中文字幕 久热精品 视频在线| 精品国产一区二区三区av性色 | 奇米影视一区二区三区| 亚洲成人精品在线观看| 亚洲午夜久久久| 亚洲柠檬福利资源导航| 亚洲视频在线观看三级| 国产精品久久99| 国产精品成人免费精品自在线观看| 久久影院午夜论| 国产欧美精品国产国产专区| 久久精品欧美一区二区三区麻豆| 精品国产区一区| 日本一区二区综合亚洲| 综合网在线视频| 一区二区三区丝袜| 婷婷国产v国产偷v亚洲高清| 亚洲第一搞黄网站| 日本亚洲免费观看| 狠狠色综合日日| 成人激情视频网站| 欧日韩精品视频| 欧美精品久久一区二区三区| 日韩一区二区在线观看视频| 精品99999| 中文字幕一区二区三中文字幕| 亚洲三级电影全部在线观看高清| 亚洲黄色av一区| 男女男精品网站| 国产999精品久久久久久| av亚洲精华国产精华| 欧美日韩一区中文字幕| 精品国产123| 国产精品国产三级国产三级人妇 | 精品国产91乱码一区二区三区| 精品动漫一区二区三区在线观看| 国产午夜精品理论片a级大结局| 中文字幕在线不卡一区二区三区| 亚洲一区影音先锋| 狠狠色综合日日| 色综合色综合色综合| 欧美一区二区不卡视频| 欧美激情一区二区三区全黄| 一区二区三区中文字幕精品精品| 免费xxxx性欧美18vr| 丁香亚洲综合激情啪啪综合| 在线观看中文字幕不卡| 精品电影一区二区| 亚洲影院久久精品| 国产成人av福利| 精品视频999| 国产丝袜美腿一区二区三区| 亚洲国产精品久久人人爱| 国产精品99久久久久久有的能看| 色88888久久久久久影院按摩| 日韩视频一区二区三区| 亚洲人精品午夜| 国内精品写真在线观看| 欧美日韩一区成人| 中文字幕在线一区| 久久精品国产精品青草| 色综合久久综合网97色综合 | 日韩一区欧美小说| 久久精品av麻豆的观看方式| 色吧成人激情小说| 日本一二三不卡| 久久不见久久见免费视频1| 日本丶国产丶欧美色综合| 久久毛片高清国产| 日韩电影在线免费看| 一本到不卡免费一区二区| 国产亚洲精品aa| 另类小说图片综合网| 欧美日韩三级一区| 亚洲视频在线一区二区| 国产精品91一区二区| 在线不卡一区二区| 亚洲综合激情网| 色综合久久久久综合| 中文字幕成人av| 国产成人免费在线| 欧美成人一区二区三区片免费| 亚洲v中文字幕| 欧美视频一区二区三区在线观看 | 国产欧美日韩视频一区二区| 美女在线观看视频一区二区| 欧美日韩国产影片| 亚洲永久精品国产| 色欧美片视频在线观看在线视频| 国产精品污污网站在线观看 | 九九热在线视频观看这里只有精品| 欧美日韩一区中文字幕| 亚洲一线二线三线久久久| 色哟哟日韩精品| 亚洲精品综合在线| 色婷婷国产精品综合在线观看| 国产精品嫩草99a| 国产成人亚洲综合a∨婷婷| 久久久国际精品| 丁香亚洲综合激情啪啪综合| 国产精品网站在线播放| av在线不卡网| 一区二区三区高清| 在线观看三级视频欧美| 亚洲成人资源在线| 欧美一级黄色大片| 韩国理伦片一区二区三区在线播放| 日韩欧美电影一二三| 国产一区欧美二区| 国产校园另类小说区| 成人国产精品视频| 亚洲欧美偷拍另类a∨色屁股| 在线国产亚洲欧美| 日韩高清在线不卡| 久久综合久久综合九色| 国产成人精品免费一区二区| 国产精品久久久久久久久免费相片 | 一区二区三区日韩| 3d动漫精品啪啪| 国产精品18久久久| 亚洲免费观看在线观看| 欧美性受xxxx黑人xyx性爽| 日韩专区欧美专区| 久久久久成人黄色影片| 91麻豆成人久久精品二区三区| 香蕉av福利精品导航| 日韩片之四级片| 成人黄色大片在线观看| 亚洲成av人影院| 精品91自产拍在线观看一区| 99这里只有精品| 日韩精品欧美成人高清一区二区| 精品免费日韩av| 99久久免费视频.com| 视频一区二区欧美|