(密碼學)[C++]Caesar加密
阿新 • • 發佈:2018-12-26
1.凱撒密碼(Caesar Shift)是一種簡單的移位密碼(The Shift Cipher)
2.一般只對26個字母進行移位
3.對字母A:設移位數(金鑰)為key
若key = 3,則結果為D,
若key = 0,則結果為A,
若key = 25,則結果為Z,
若key = 29,則結果為D。
4.對字母Z:
若key = 3,則結果為C,
若key = 0,則結果為Z,
若key = 25,則結果為Y,
若key = 29,則結果為C。
Caesar C++實現程式碼#include<iostream> #include<string> using namespace std; //加密 void encrypt(string &s, int key){ char ch = '\0'; for(unsigned int i=0;i < s.length();i++){ if('a' <= s[i] && s[i] <= 'z') ch = 'a'; else ch = 'A'; if('A' <= s[i] && s[i] <= 'Z' || 'a' <= s[i] && s[i] <= 'z') s[i] = ch + (s[i] - ch + key) % 26;//實現字母之間的迴圈移位 } } //解密 void decrypt(string &s, int key){ char ch = '\0'; for(unsigned int i=0;i < s.length();i++){ if('a' <= s[i] && s[i] <= 'z') ch = 'z'; else if('A' <= s[i] && s[i] <= 'Z') ch = 'Z'; if('A' <= s[i] && s[i] <= 'Z' || 'a' <= s[i] && s[i] <= 'z') s[i] = ch - (ch - s[i] + key) % 26;<span style="font-family: Arial, Helvetica, sans-serif;">//實現字母之間的迴圈移位</span> } } int main(){ string s = ""; cout<<"請輸入明文:"<<endl; getline(cin, s, '\n'); int key = 0; cout<<"請輸入金鑰:"; cin>>key; encrypt(s, key); cout<<"加密後的密文:"<<s<<endl; decrypt(s, key); cout<<"解密後的明文:"<<s<<endl; return 0; }