亚洲欧美第一页_禁久久精品乱码_粉嫩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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
婷婷成人激情在线网| 5月丁香婷婷综合| 国产成人欧美日韩在线电影| 日本美女一区二区| 日韩av电影免费观看高清完整版 | 精品一区二区三区久久久| 亚洲影院久久精品| 亚洲国产裸拍裸体视频在线观看乱了| 一区二区三区欧美在线观看| 一区二区三区在线影院| 亚洲图片欧美色图| 蜜臀av性久久久久蜜臀aⅴ| 六月丁香综合在线视频| 国产剧情一区在线| 成人18视频在线播放| 91官网在线观看| 欧美精品自拍偷拍| 久久伊人中文字幕| 亚洲视频资源在线| 五月婷婷综合在线| 国产高清精品网站| 色综合视频在线观看| 欧美久久久久久久久中文字幕| 精品区一区二区| 国产精品久久久99| 视频一区欧美日韩| 懂色av一区二区三区免费看| 欧洲精品在线观看| 久久久一区二区| 亚洲你懂的在线视频| 蜜桃av噜噜一区二区三区小说| 国产成人免费视频网站| 在线观看视频一区| 国产三级三级三级精品8ⅰ区| 亚洲视频免费看| 激情都市一区二区| 91成人国产精品| 久久久99免费| 日本最新不卡在线| 91视频在线观看| 久久这里只有精品首页| 亚洲国产中文字幕在线视频综合| 激情伊人五月天久久综合| 色先锋久久av资源部| 欧美成人vr18sexvr| 亚洲精品国产无套在线观| 激情成人午夜视频| 欧美丰满少妇xxxxx高潮对白| 国产日韩欧美一区二区三区乱码| 亚洲国产精品欧美一二99| 久久精品国产秦先生| 欧美三级韩国三级日本三斤| 欧美激情在线一区二区三区| 免费在线看成人av| 欧美视频自拍偷拍| 亚洲人午夜精品天堂一二香蕉| 久久国产精品露脸对白| 911精品产国品一二三产区| 亚洲日本乱码在线观看| 成人污污视频在线观看| 精品裸体舞一区二区三区| 午夜天堂影视香蕉久久| 色婷婷综合久久久久中文一区二区 | 亚洲综合久久av| av成人免费在线| 国产精品国产三级国产aⅴ入口| 国产原创一区二区三区| 精品国产乱码91久久久久久网站| 丝袜亚洲另类欧美| 欧美一区二区三区四区在线观看| 一区二区三区在线视频观看 | 三级一区在线视频先锋| 欧美色视频在线观看| 亚洲最大成人综合| 在线一区二区三区| 亚洲一二三四在线观看| 91成人看片片| 丝袜诱惑制服诱惑色一区在线观看 | 顶级嫩模精品视频在线看| 欧美电视剧在线观看完整版| 婷婷中文字幕一区三区| 欧美一区三区二区| 韩国女主播成人在线| 欧美精品一区二区三区蜜桃视频| 麻豆精品国产91久久久久久| 欧美精品一区二区蜜臀亚洲| 国产综合久久久久久久久久久久| 久久精品视频在线免费观看| 国产a级毛片一区| 中文字幕日本乱码精品影院| 一本到不卡精品视频在线观看| 亚洲裸体xxx| 欧美精品乱码久久久久久按摩| 日韩精品一二三| 国产亚洲婷婷免费| 色婷婷精品大在线视频| 天天综合色天天| 精品国产亚洲在线| 91在线高清观看| 天堂一区二区在线| 久久久av毛片精品| 欧美在线观看视频一区二区 | 国产精品无圣光一区二区| 色哟哟欧美精品| 蜜臀国产一区二区三区在线播放 | 白白色 亚洲乱淫| 亚洲国产美国国产综合一区二区| 日韩精品一区二| 91久久精品一区二区三| 看片的网站亚洲| 亚洲欧美偷拍另类a∨色屁股| 欧美一区二区三区男人的天堂| 大尺度一区二区| 欧美aⅴ一区二区三区视频| 欧美激情综合在线| 欧美一级午夜免费电影| 色8久久人人97超碰香蕉987| 蜜臀精品一区二区三区在线观看| 亚洲人成影院在线观看| 日韩欧美123| 欧美三级中文字| 成人网男人的天堂| 精品在线观看视频| 亚洲成人一区二区在线观看| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 粉嫩av一区二区三区粉嫩| 亚洲成人777| 亚洲欧美韩国综合色| 久久精品免费在线观看| 欧美日韩dvd在线观看| 白白色 亚洲乱淫| 国产精品99久久不卡二区| 日韩中文欧美在线| 亚洲国产综合人成综合网站| 国产精品灌醉下药二区| 久久精品一区二区三区不卡牛牛| 日韩一区国产二区欧美三区| 在线观看一区二区视频| 99re视频这里只有精品| 国产成人精品在线看| 国产一区二区三区综合| 精品一区二区三区的国产在线播放| 夜夜亚洲天天久久| 一区二区三区四区精品在线视频 | 欧美夫妻性生活| 在线不卡欧美精品一区二区三区| 91成人看片片| 91福利在线看| 欧美日韩成人综合在线一区二区| 欧美性xxxxxxxx| 欧美剧在线免费观看网站| 欧美性三三影院| 欧美日韩在线三级| 欧美日韩国产免费一区二区| 欧美日韩国产综合一区二区三区 | 亚洲欧洲国产日韩| 亚洲欧美日韩久久精品| 亚洲自拍与偷拍| 亚洲福利国产精品| 麻豆精品在线播放| 国产一区999| 成人黄色小视频| 91福利社在线观看| 91精品一区二区三区在线观看| 91精品国产欧美一区二区18| 精品国产一区二区三区久久久蜜月 | 91香蕉视频mp4| 欧美日韩精品免费| 精品国产自在久精品国产| 久久影院电视剧免费观看| 国产精品不卡在线观看| 亚洲一区二区美女| 久久精品久久综合| 成人丝袜18视频在线观看| 色婷婷av一区二区三区之一色屋| 欧美日韩精品电影| 久久综合九色综合久久久精品综合| 国产欧美日韩另类视频免费观看| 国产精品嫩草99a| 亚洲二区在线观看| 国产一区在线观看视频| 在线观看日韩国产| 久久婷婷综合激情| 亚洲无线码一区二区三区| 国产老女人精品毛片久久| 色综合久久99| 精品剧情v国产在线观看在线| 国产精品免费人成网站| 亚洲成人一区在线| 国产激情视频一区二区三区欧美| 色国产综合视频| 日韩欧美卡一卡二| 亚洲蜜桃精久久久久久久| 久久成人免费网| 日本高清视频一区二区| 久久久亚洲精品一区二区三区 | 国产不卡视频在线观看| 欧美高清视频不卡网| 亚洲人成在线观看一区二区| 蜜桃视频第一区免费观看|