密碼學程式之Column permutation(列置換)加密

來源:互聯網
上載者:User

通過編程實現Column permutation加密,更加深入的瞭解其原理,掌握Column permutation演算法。

步驟:

(1)       輸入密鑰

(2)   排出密鑰中字母的順序

(3)   輸入明文

(4)   按密鑰中字母的順序打亂明文順序

(5)   輸出密文

(6)   解密

(7)   輸出明文

#include<stdio.h>#include<string.h>int main(){int i,j,l,k,m,num[30];char key[30],plantext[100],plantext2[100],cipher[100];printf("please input the key\n");scanf("%s",key);l=strlen(key);for(i=0;i<l;i++){num[i]=0;for(j=0;j<l;j++){if(key[j]<=key[i]){num[i]=num[i]+1;}if(key[j]==key[i]&&j>i)num[i]=num[i]-1;}}printf("please input the plantext\n");scanf("%s",plantext);k=strlen(plantext);i=0;//末尾補xfor(m=k%l;m<l;m++){plantext[k+i]='x';i++;}if(k%l==0)//計算有多少行m=k/l;else m=k/l+1;printf("加密:\n");for(i=0;i<m;i++){for(j=0;j<l;j++){cipher[i*l+j]=plantext[i*l+num[j]-1];}}for(i=0;i<l;i++)//輸出密文{for(j=0;j<m;j++)printf("%c",cipher[j*l+i]);}printf("\n");printf("解密:\n");//解密密文for(i=0;i<m;i++){for(j=0;j<l;j++){plantext2[i*l+num[j]-1]=cipher[i*l+j];}}plantext2[(i-1)*l+j]='\0';printf("%s\n",plantext2);return 0;}

只能瞭解一下列置換密碼的原理,也就是動手練習練習,不能實際應用。

程式運行如下:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.