用雙向迴圈鍊錶實現凱撒(Caesar)密碼

2021-08-19 19:54:16 字數 1388 閱讀 9743

凱撒密碼簡介:

它是一種代換密碼。據說凱撒是率先使用加密函的古代將領之一,因此這種加密方法被稱為凱撒密碼。

凱撒密碼作為一種最為古老的對稱加密體制,在古羅馬的時候都已經很流行,他的基本思想是:通過把字母移動一定的位數來實現加密和解密。明文中的所有字母都在字母表上向後(或向前)按照乙個固定數目進行偏移後被替換成密文。例如,當偏移量是3的時候,所有的字母a將被替換成d,b變成e,以此類推x將變成a,y變成b,z變成c。由此可見,位數就是凱撒密碼加密和解密的金鑰。

凱撒密碼的思想很簡單,實現起來也很容易,但是它是很多加密方法的基礎版本。

我們用雙向迴圈鍊錶存放26個字母,需要對字母進行移位操作時,我們只需要移動鍊錶指標的起始位置即可

實現**如下:

#include#include#define ok 1

#define error 0

typedef char elemtype;

typedef int status;

typedef struct dualnode //定義雙向鍊錶的結構體

dualnode,*dulinklist;

status initlist(dulinklist *l) //形參(dulinklist *l)相當於(dualnode **l)

p->next = (*l)->next; //首尾相連構成迴圈鍊錶

(*l)->next->prior = p;

return ok;

}void caesar(dulinklist *l,int i) //鍊錶指標前移或者後移i位

while(--i);

} if (i < 0)

while(++i); }}

int main()

printf("\n");

printf("please input a number:");

scanf("%d",&n);

caesar(&l,n);

printf("the caesar key is:\n");

for (i=0;i<26;i++)

return 0;

}

實現結果:

雙向迴圈鍊錶 java實現

雙向迴圈煉表示意圖 雙向迴圈鍊錶實現 public class doublelink private int size 鍊錶長度 public nodehead 頭節點 constructor public doublelink 獲取鍊錶的長度 return public int size 判斷鍊錶...

C 實現雙向迴圈鍊錶

雙向迴圈鍊錶 除錯正常,所有功能均測試 節點類 template class listnode listnode type d,listnode n nullptr,listnode p nullptr data d next n prev p void setdata type d 雙向迴圈鍊錶 ...

雙向迴圈鍊錶的實現

其實雙向迴圈鍊錶與單鏈表的區別在於每個節點的結構發生了改變,具體的說是,每個節點多了乙個指標域,用於指向上乙個節點。其他的如鍊錶物件就不需要進行改變了。新的節點類 class lnode def init self,elem 0,prev none,next none self.prev prev ...