成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

經(jīng)典密碼學(xué)——行置換加密法-創(chuàng)新互聯(lián)

很多教材上對(duì)于行置換密碼、列置換密碼的定義都不是完全相同,甚至核心思想根本不一樣。筆者就自己學(xué)習(xí)的經(jīng)歷,簡(jiǎn)單介紹一種一些教材上所謂的“行置換密碼”的算法,大家一起交流、探討。

創(chuàng)新互聯(lián)公司專注于利辛企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城建設(shè)。利辛網(wǎng)站建設(shè)公司,為利辛等地區(qū)提供建站服務(wù)。全流程按需策劃,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

利用這種加密方法,明文按行填寫在一個(gè)矩陣中,而明文則是以預(yù)定的順序按列讀取生成的。例如如果矩陣是4列5行,那么明文“encryption algorithm”(省去空格后)可以如下寫入該矩陣:

2 3 1 4
e n c r
y p t i
o n a l
g o r i
t h m s

按一定的順序讀取列以生成密文。

對(duì)于這個(gè)示例,如果讀取順序?yàn)檫f增順序,則明文就是:“ctarm eyogt npnoh rilis”(添加空格只是為了便于觀察)。這種加密法的密鑰是列數(shù)和讀取列的順序。如果列數(shù)很多,記起來可能會(huì)比較困難,因此它可以表示成一個(gè)關(guān)鍵詞,該關(guān)鍵詞的長(zhǎng)度等于列數(shù),而其字母順序決定讀取列的順序。

例如,關(guān)鍵詞“general”有7個(gè)字母,意味著矩陣有7列。由于“a”是“general”中字母順序最低的,因此數(shù)字1放在第6列;從左往右,第一個(gè)“e”為其次,所以數(shù)字2放在第2列;第二個(gè)“e”則是使數(shù)字3放在第4列。最后的順序如下:

g  e  n  e  r  a  l

4  2  6  3  7  1  5

_______________________________________________________________________________________

This scheme is to write the message in a rectangle, row by row, and read the message off, column by column, but permute the order of the columns.The order of the columns then becomes the key to the algorithm.For example,

      Key:   4  3  1  2  5  6  7

   Plaintext:   a  t  t  a  c  k  p

          o  s  t  p  o  n  e

          d  u  n  t  i  l  t

          w  o  a  m  x  y  z

   Ciphertext:  ttna aptm tsuo aodw coix knly petz (再次強(qiáng)調(diào),空格只是為了便于觀察)

Thus, in this example, the key is 4312567.To encrypt, start with the column that is labeled 1, in this case column 3. Write down all the letters in that column.

**************************************************************************************

上述的是一次加密,也可把上述密文當(dāng)做新一輪加密的明文,再次進(jìn)行行置換加密。

參考資料:

《Cryptography and Network Security Principles and Practice, Fifth Edition》

                        ————William Stallings

《Classical And Contemporary Cryptology》    ————Richard Spillman

  1. //Z26上的行置換密碼
  2. #include<stdio.h>
  3. #include<string.h>
  4. #include<stdlib.h>
  5. #include<time.h>
  6. int//明文長(zhǎng)度
  7. char
  8. char
  9. char
  10. int//密鑰長(zhǎng)度
  11. int//密鑰
  12. int//標(biāo)記是否已經(jīng)被轉(zhuǎn)換為數(shù)字
  13. int//把密鑰換成數(shù)字
  14. int//臨時(shí)矩陣,存放使順序遞增的下標(biāo)序號(hào)
  15. void//密鑰生成算法
  16. void
  17. void
  18. intint
  19. int
  20. int
  21. FILE
  22. "plain.txt""r"
  23. "%s"//從文件讀入明文
  24. "以上正確"
  25. for
  26. "%c"
  27. return
  28. void//密鑰生成算法
  29. int
  30. "請(qǐng)輸入想生成的隨機(jī)密鑰的長(zhǎng)度:"
  31. "%d"
  32. for
  33. "\n隨機(jī)產(chǎn)生的密鑰串為:"
  34. for
  35. "%c "
  36. "\n\n"
  37. char//臨時(shí)矩陣,為了更方便的把密文轉(zhuǎn)換出來
  38. //這個(gè)數(shù)組必須設(shè)置為全局的,在函數(shù)中聲明的話申請(qǐng)內(nèi)存會(huì)出錯(cuò)!!!
  39. void
  40. ///轉(zhuǎn)換:把密鑰字符串排序,變成數(shù)字
  41. int
  42. int
  43. int//每輪循環(huán)給"最小"的字母編號(hào)(未編號(hào)的、靠前的、序號(hào)小的字母為最小)
  44. for//把字母換成從1開始的數(shù)字
  45. while
  46. for
  47. if//沒轉(zhuǎn)換則繼續(xù)
  48. if
  49. //
  50. "The order of the key is :\n"
  51. for
  52. "%d "
  53. "\n"
  54. for//忽略非字母字符,把大寫轉(zhuǎn)換為小寫
  55. if
  56. while
  57. "p"//不能整除時(shí)補(bǔ)上無效字符p
  58. //生成密文矩陣
  59. for//行
  60. for//列
  61. for//列
  62. for
  63. if
  64. for//列
  65. for//行
  66. char
  67. void//解密函數(shù)
  68. int
  69. for//num[i]作為列
  70. for//行
  71. for//行
  72. for//列

 //同文件夾下需要有“plain.txt”文件,里面必須全部是英文字母,可大小寫混雜,但是不能出現(xiàn)其他字符,如空格、回車換行、數(shù)字等。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

分享標(biāo)題:經(jīng)典密碼學(xué)——行置換加密法-創(chuàng)新互聯(lián)
文章路徑:http://jinyejixie.com/article8/jeiip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)網(wǎng)站維護(hù)、云服務(wù)器App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
新源县| 三都| 大连市| 三穗县| 龙山县| 舞钢市| 大洼县| 姚安县| 万全县| 青田县| 平江县| 正安县| 神木县| 和政县| 丰镇市| 赣州市| 本溪市| 三亚市| 招远市| 招远市| 陇西县| 沐川县| 安吉县| 永济市| 临沧市| 北宁市| 天长市| 贵德县| 黑河市| 万州区| 怀安县| 广南县| 类乌齐县| 乐清市| 涟源市| 高阳县| 绍兴市| 兴仁县| 吴旗县| 额敏县| 民和|