當前位置:編程學習大全網 - 編程語言 - 編程加密課程

編程加密課程

謝謝邀請我。

根據第二張圖中的過程解釋,可以理解加密過程:

首先,每n個字符構造壹個如圖所示的矩陣。按關鍵順序重新排序。最後合成並輸出壹個字符串。我這裏把這個問題看成是每n個字符壹組,所以不建二維數組,按照key指定的順序輸出。其實順序就是key的值從小到大排序後的索引順序。我這裏用的是上面的流程,具體說明已經附在圖例裏了。請看評論。我不是重新建立壹個二維數組來做的。我也可以考慮通過字符串拆分成二維數組,然後按照鍵的索引順序重新構造壹個新的二維數組,然後按順序輸出。這裏有壹個方法。我的方法需要的空間相對較小,可能不夠直觀。請參考:

參考代碼如下

# include & ltiostream & gt

#包含“Math.h”

使用命名空間std

int main(){

char cl[1000] = {' '},key[11]= { ' \ 0 ' };

int col = 0,maxCharNum = 0,maxKeyNum = 0,keyIndex[10]= { 0 };;

//獲取字符串,求出字符串的個數。

CIN & gt;& gtnoskipws

做{

CIN & gt;& gtcl[col++];

} while (cl[col - 1]!= ' \ n ');

cl[col-1]=“”;//用空格替換換行符

maxCharNum = col-1;

//輸入並查找鍵的長度,並找到正確的索引順序。

CIN & gt;& gt關鍵;

for(int I = 0;我& lt11;i++){

if(key[I]= = ' \ 0 '){

maxKeyNum = I;

打破;

}

}

for(int I = 0;我& ltmaxKeyNumi++)

for(int j = 0;j & ltmaxKeyNumj++)

if((key[j]--0 ')= = I){

keyIndex[I]= j;

打破;

}

//每個分組的起點必須是密鑰長度的整數倍。

for(int start = 0;開始& ltmaxCharNumstart+= maxKeyNum){

//在每個組中循環,每壹行都是maxKeyNum元素。

for(int I = 0;我& ltmaxKeyNumi++){//打印原字符串對應的字符位置:

col = start+keyIndex[I];

col & gtmaxCharNum?cout & lt& lt':cout & lt& ltcl[col];

}

}

}

  • 上一篇:兒童編程書
  • 下一篇:淄博理工學校專業有哪些?專業介紹
  • copyright 2024編程學習大全網