色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

用C語言程序如何模擬棋盤密碼呢?

冬至子 ? 來源:計算機科學實驗室 ? 作者:好壞生長 ? 2023-01-18 11:06 ? 次閱讀

棋盤密碼是利用波利比奧斯方陣(Polybius Square)進行加密的密碼方式,產生于公元前兩世紀的希臘,相傳是世界上最早的一種密碼。

棋盤秘密也是代換密碼的一種,它將一個字符用另一個字符代替。

假設有棋盤如下

2.jpg

例如字符A加密為11,字符E加密為15,字符R加密為42。根據坐標,又可以定位到明文字符,實現解密。

C語言程序如何模擬棋盤密碼呢?

1 首先定義一個數組,用于存儲密鑰,棋盤密碼的密鑰就是棋盤本身。

2 將全部的英文字母轉換為大寫字母。

3 加密算法實現:棋盤以5X5的大小定義,坐標可以用下標加1的形式表示

4 在26個字母中,用5X5的矩陣并不能表示所有的字符,所以I和J兩個字符放在一起,加密的時候直接按照字符I來實現加密,解密的時候,只能根據上下文來判斷到底是I還是J

下面是實現代碼

#include


static char key[5][5] = {
  {'A', 'B', 'C', 'D', 'E'},
  {'F', 'G', 'H', 'I', 'K'},
  {'L', 'M', 'N', 'O', 'P'},
  {'Q', 'R', 'S', 'T', 'U'},
  {'V', 'W', 'X', 'Y', 'Z'}
};


void upcase(char *ch){
  if(*ch >= 'a' && *ch <= 'z')
    *ch = *ch - 32;
}


void displayStr(char data[]){
  int i = 0;
  while(data[i]){
    printf("%c", data[i]);
    i ++;
  }
  printf("\\n");
}


void displayCipher(char cipher[][2]){
  int i = 0;
  while(cipher[i][0]){
    printf("%o%o", cipher[i][0], cipher[i][1]);
    i ++;
  }
  printf("\\n");
}


void encrypte(char data[], char key[][5], char cipher[][2]){
  if(!data[0]) return;


  int i = 0, m = 0, n = 0, tag = 0;
  while(data[i]){
    if(data[i] == 'J' || data[i] == 'j') data[i] = 'I';
    upcase(&data[i]);
    i ++;
  }


//  displayStr(data);


  i = 0;
  while(data[i]){
    for(m = 0; m < 5; m ++){
      tag = 0;
      for(n = 0; n < 5; n ++){
        if(data[i] == key[m][n]){
          cipher[i][0] = m + 1;
          cipher[i][1] = n + 1;


          tag = 1;
          break;
        }
      }
      if(tag == 1) break;
    }
    i ++;
  }
}


void decrypte(char cipher[][2], char key[][5], char data[]){
  int i = 0, m = 0, n = 0;
  while(cipher[i][0]){
    data[i] = key[cipher[i][0] - 1][cipher[i][1] - 1];
    i ++;
  }
}


int main(){


  char cipher[10][2] = {0};
  char data[] = "A";
  char data2[20] = {0};


  encrypte(data, key, cipher);


  displayCipher(cipher);


  decrypte(cipher, key, data2);


  displayStr(data2);


  return 0;
}

我們說棋盤密碼的坐標不是唯一的,還可以是其他的字符表示棋盤,例如將12345換成FGHTU等等,都是可以的,主要能夠區分每個字符的坐標。

在這個實現過程中,是可以靈活改變源碼,實現坐標軸動態變化的。只需要修改一條語句就可以實現。

static char xKey[5] = {'G', 'E', '3', 'R', 'T'};
static char yKey[5] = {'1', 'F', '3', 'T', 'A'};


void displayCipher(char cipher[][2]){
  int i = 0;
  while(cipher[i][0]){
//    printf("%o%o", cipher[i][0], cipher[i][1]);
    printf("%c%c", xKey[cipher[i][0]-1], yKey[cipher[i][1]-1]);
    i ++;
  }
  printf("\\n");
}

實際上,我們只是修改了密文的打印方式,對整個程序的邏輯結構沒有做任何修改。

審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7605

    瀏覽量

    136976
  • 加解密
    +關注

    關注

    0

    文章

    18

    瀏覽量

    6534
  • printf函數
    +關注

    關注

    0

    文章

    31

    瀏覽量

    5894
收藏 人收藏

    評論

    相關推薦

    求單片機密碼鎖的c語言程序

    想做一個單片機控制的密碼鎖,苦于參考了百度文庫的程序,還是不夠有思緒,求完整c語言程序,我的是
    發表于 04-12 10:39

    電子密碼鎖源程序 (C語言代碼)

    電子密碼鎖源程序 (C語言代碼)
    發表于 03-28 09:44 ?379次下載

    模擬串口的C語言程序代碼

    模擬串口的C語言程序代碼 本程序模擬串口硬件機制寫的,使用時可設一定時中斷,時間
    發表于 07-16 15:13 ?1731次閱讀

    心的c語言程序

    C語言編寫的程序,在屏幕上輸出一個心形,并顯示“這顆心送給你”
    發表于 11-26 15:45 ?5次下載

    時鐘設計程序C語言

    時鐘設計程序。時鐘設計程序。時鐘設計程序C語言】時鐘設計程序
    發表于 12-28 12:02 ?0次下載

    C語言教程之獲取CMOS密碼

    C語言教程之獲取CMOS密碼,很好的C語言資料,快來學習吧。
    發表于 04-25 16:49 ?0次下載

    電子密碼鎖的C語言程序

    這個是電子密碼鎖的C語言程序,以及電子密碼鎖的仿真圖。
    發表于 07-29 17:26 ?130次下載

    HL開發板配套的密碼鎖(掉電記憶密碼C語言資料

    HL開發板配套C實驗例程100例之密碼鎖(掉電可記憶密碼),很好的單片機C語言資料。
    發表于 09-01 09:39 ?4次下載
    HL開發板配套的<b class='flag-5'>密碼</b>鎖(掉電記憶<b class='flag-5'>密碼</b>)<b class='flag-5'>C</b><b class='flag-5'>語言</b>資料

    使用51單片機矩陣鍵盤模擬密碼鎖的C語言程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機矩陣鍵盤模擬密碼鎖的C語言程序免費下載。
    發表于 08-15 17:32 ?17次下載
    使用51單片機矩陣鍵盤<b class='flag-5'>模擬</b><b class='flag-5'>密碼</b>鎖的<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>程序</b>免費下載

    使用C語言模擬51單片機的I2C總線的資料和程序免費下載

    本文檔的主要內容詳細介紹的是使用C語言模擬51單片機的I2C總線的資料和程序免費下載。
    發表于 08-06 17:34 ?11次下載
    使用<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>模擬</b>51單片機的I2<b class='flag-5'>C</b>總線的資料和<b class='flag-5'>程序</b>免費下載

    使用C語言來編寫51單片機液晶顯示屏幕的修改密碼功能的程序免費下載

    本文檔的主要內容詳細介紹的是使用C語言來編寫51單片機液晶顯示屏幕的修改密碼功能的程序免費下載。
    發表于 07-09 17:40 ?0次下載
    使用<b class='flag-5'>C</b><b class='flag-5'>語言</b>來編寫51單片機液晶顯示屏幕的修改<b class='flag-5'>密碼</b>功能的<b class='flag-5'>程序</b>免費下載

    使用51單片機實現矩陣鍵盤模擬密碼鎖的C語言代碼免費下載

    本文檔的主要內容詳細介紹的設計使用51單片機實現矩陣鍵盤模擬密碼鎖的C語言代碼免費下載。模擬密碼
    發表于 04-29 08:00 ?5次下載
    使用51單片機實現矩陣鍵盤<b class='flag-5'>模擬</b><b class='flag-5'>密碼</b>鎖的<b class='flag-5'>C</b><b class='flag-5'>語言</b>代碼免費下載

    學習51單片機及模擬電路資料包括20個模擬電路和C語言程序

    學習51單片機及模擬電路資料包括20個模擬電路和C語言程序免費下載。
    發表于 03-12 17:40 ?43次下載
    學習51單片機及<b class='flag-5'>模擬</b>電路資料包括20個<b class='flag-5'>模擬</b>電路和<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>程序</b>

    使用單片機實現1602液晶顯示的密碼C語言程序免費下載

    使用單片機實現1602液晶顯示的密碼C語言程序免費下載
    發表于 03-30 09:32 ?60次下載

    C++中棋盤覆蓋問題分析

    的所有方格,且任何2個L型骨牌不得重疊覆蓋。 功能說明 本程序分治法的思想解決了棋盤覆蓋問題,顯示輸出 代碼簡述 用戶輸入數據,程序輸入檢測,動態分配空間,調用
    的頭像 發表于 10-08 17:06 ?1279次閱讀
    主站蜘蛛池模板: 老师我好爽再深一点老师好涨| 色欲AV色欲AV久久麻豆| 亚洲免费在线观看视频| 九色91精品国产网站| 2017必看无码作品| jizzjizz中国大学生| 日本片bbbxxx| 国产精品欧美久久久久天天影视 | 九九热国产视频| 99精品国产AV一区二区麻豆| 色聚网久久综合| 久久成人精品免费播放| jk制服啪啪网站| 亚洲精品在线不卡| 免费看黄色小说| 国产精品你懂得| 68日本xxxxxxxx79| 无毒成人社区| 嫩草影院成人| 国产精品人妻无码久久久奥特曼 | 天天干夜夜叭| 久久这里只有精品国产99| 短篇合集纯肉高H深陷骚| 亚洲一级电影| 日韩精品卡1卡2三卡四卡乱码| 黄色软件色多多| 大稥焦伊人一本dao| 伊人青青草原| 外国xxxx| 暖暖 视频 在线 观看 高清| 国产亚洲精品久久久久久白晶晶| 99久久99久久精品| 亚洲欧美日韩在线码不卡| 日本经典片免费看| 美女被j进去动态| 狠狠撩色姣姣综合久久| 东北疯狂xxxxbbbb中国| 777米奇色狠狠俺去啦| 亚洲日韩精品AV中文字幕| 射漂亮黑b丝女| 泡妞高手在都市完整版视频免费|