您当前的位置:首页 > 计算机 > 编程开发 > 数据结构与算法

【Agorithm】一次一密加密解密算法

时间:03-25来源:作者:点击数:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<cmath>
#include<cstring>
#include<string>
#include<windows.h>
#define MAX 100

using namespace std;

char key[MAX];
int len;

char *bitcode(char *str){
    char *wen;
    if((wen = (char*)malloc(len+1))==NULL){
        cout<<"申请内存失败!"<<endl;
        exit(1);
    }
    for(int i=0; i<len; i++){
        wen[i] = str[i]^key[i];
    }
    wen[len] = '\0';
    return wen;
}


int main(){

    char str[MAX];
    char *miwen, *mingwen;
    char again;

    srand(time(NULL));
    cout<<"\t\t\t\t一次一密加密算法演示!\n\n";
    s1:
        cout<<"请输入需要加密的明文字符串:";
        fflush(stdin);
        gets(str);
        len = strlen(str);
        for(int i=0; i<len; i++){
            key[i] = rand()%10+'0';
        }
        cout<<"此次加密的密钥序列为:";
        for(int i=0; i<len; i++){
            cout<<key[i];
        }
        cout<<endl;
        miwen = bitcode(str);
        cout<<"加密前的明文为:";
        cout<<str<<endl;
        cout<<"加密后的密文为:"<<miwen<<endl;
        mingwen = bitcode(miwen);
        cout<<"解密后的明文为:"<<mingwen<<endl;
        cout<<endl;

    s2:
        cout<<"继续执行 (Y/N)?";
        fflush(stdin);
        cin>>again;
        if(again =='y'|| again =='Y'){
            goto s1;
        }
        else if(again == 'n' || again == 'N'){
            cout<<"演示结束!"<<endl;
            return 0;
        }
        else{
            cout<<"输入错误请重新输入!"<<endl;
            goto s2;
        }
        system("pause");
}

以下是运行结果:

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门