凱撒密碼簡介:
它是一種代換密碼。據說凱撒是率先使用加密函的古代將領之一,因此這種加密方法被稱為凱撒密碼。
凱撒密碼作為一種最為古老的對稱加密體制,在古羅馬的時候都已經很流行,他的基本思想是:通過把字母移動一定的位數來實現加密和解密。明文中的所有字母都在字母表上向後(或向前)按照乙個固定數目進行偏移後被替換成密文。例如,當偏移量是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 ...