简单的加密/解密算法_/c++
生活随笔
收集整理的這篇文章主要介紹了
简单的加密/解密算法_/c++
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/qq_36557960/article/details/79299093
????? ? 關于加密和解密問題,有的加密算法是不存在解密算法的(原因就是加密算法的不可逆性,即無法通過算法將密文還原),有的加密存在解密算法(原因是其加密過程是可逆的,即可以通過逆向算法將密文還原)。然而單獨的一種加密算法不一定可靠,這時可以將多種加密算法組合使用。至于相關的加密算法各位自己去了解。
????? ? 下面介紹一個簡單的加密/解密算法實例,希望對此加密解密算法有一定認識:?
????? ? 首先介紹加密算法: 主要加密計算為 '^' 原因是 '^'運算是可逆的,如二進制數 1^0 = 1, 1^1 = 0; 0^1 = 1, 0^0 = 0;
? 所以 1 = 1^0^0,即是加密部分為 [1^0] = r, 解密部分為[r^0], 所以解密算法就是將密文與加密數據0在進行一次'^'運算,以此類推就可以實現多位二進制的加密解密。在計算執行的指令都是二進制數,這里就需要理解為什么十進制和ASCII碼同樣可以使用'^'運算進行加密解密.`
????? ? c++源代碼:?
example_1:
#include <iostream>#define KEY 1313113using namespace std;//加密算法 int encrypt(int src_pass, int key){return src_pass^key; }//解密算法 int decrypt(int des_pass, int key){return des_pass^key; }int main(){int src_pass = 2000;cout<<src_pass<<endl;int des_pass = encrypt(src_pass, KEY);cout<<des_pass<<endl;int result = decrypt(des_pass, KEY);cout<<result<<endl;return 0; }?????? ? example2:
#include <iostream> #include <windows.h> #define L 6using namespace std;//原始數據 int mess[L] = {-23, -28, -19, -19, -18, -10};//對原始數據進行加密 //加密算法 void encrypt(char *arr, int len){for(int i = 0; i < len; i++){arr[i] |= -0x80; //希望讀者了解ascii^-0x80,這里等價于 ascii^0x80arr[i] ^= 0x1;} } //解密算法 void decrypt(char *arr, int len){for(int i = 0; i < len; i++){arr[i] ^= 0x1; arr[i] ^= 0x80; //對ascii最高位進行了加密'^'運算,當然也要進行解密'^'運算} } bool judge(char* arr, int index){if(index < 0){return true;}else{if((int)arr[index] == mess[index]){judge(arr, index-1);}else{return false;}}return true; } //測試用 void print_(char *arr, int len){for(int i = 0; i < len; i++){cout<<(int)arr[i]<<", ";}cout<<endl; } //測試用 string print(char *arr, int len){string tmp = "";for(int i = 0; i < len; i++){tmp += arr[i];}return tmp; } //測試時的源代碼 int main() {char *arr = new char[L];cout<<"please input the password: ";for(int i = 0; i < L; i++){cin>>arr[i];}string tmp = "";tmp = print(arr, L);cout<<tmp<<endl;encrypt(arr, L);print_(arr, L);tmp = print(arr, L);cout<<tmp<<endl;decrypt(arr, L);tmp = print(arr, L);cout<<tmp<<endl;if(judge(arr, L-1)){cout<<"you is the user, hello!!"<<endl;}else{cout<<"you are not the user!!!"<<endl;}system("pause");return 0; }? ? ?希望兩個小例子,各位能夠有所收獲。
總結
以上是生活随笔為你收集整理的简单的加密/解密算法_/c++的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BlowFish
- 下一篇: 目标检测之---R-FCN and R-