瞎玩 - 字符串加密解密

来源:互联网 发布:网络优化工程师 怎么样 编辑:程序博客网 时间:2024/04/28 00:29

今天有位群里的兄弟想给自己的程序员女朋友表白,但是不知道怎么样弄?于是起哄的同学们就提出字符串加密,然后给她密文和方法,让妹子自己来解密!
下面是自己百无聊赖做的一个扯咸蛋的方法,供大家瞎玩。由于ASCII只能到127,超出之后就会显示一些类似于中文的乱码,我想妹子看到肯定会讨厌,所以大伙在改动的时候注意了,可惜俺还是单身啊!……>>_<<……

#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAXLEN 256#define _DEBUG_#ifdef _DEBUG_#define DBG(fmt, args) fprintf(stdout,"DBG: "fmt, ## args)#else#define DBG(fmt, args) #endif#define ERR(fmt, args) fprintf(stderr,"ERR: "fmt, ## args)void exchage(char *src, int len, int mode){    int i=0;    char ch;    switch(mode)    {        case 0:        for(i=0;i<len/2;i++)        {            ch = src[i];            src[i] = src[len-1-i];            src[len-1-i] = ch;        }        break;        case 1:        for(i=0;i<len-1;i+=2)        {            ch = src[i];            src[i] = src[i+1];            src[i+1] = ch;        }        break;        default: break;    }}int main(int argc, char* argv[]){    int i=0,j=0;    char s[MAXLEN]={0};    char *src = NULL;    char *cipher=NULL;    char ch = 0;    while(1)    {        if(ch == '1')        {            printf("encode string:");            fflush(stdin);            memset(s,0,MAXLEN);            /* 最后的换行符0x0a一起接收进来算在len中 */            fgets(s,MAXLEN,stdin);            int len = strlen(s)-1;            src = (char *)malloc((len+1)*sizeof(char));            cipher = (char *)malloc((len+1)*sizeof(char));            strncpy(src,s,len);            src[len] = '\0';            i=0;            while(src[i])            {                cipher[i] = src[i]+i;                i++;            }            cipher[len] = '\0';            exchage(cipher,len,1);            exchage(cipher,len,0);            printf("%s\n",cipher);            free(src);        }        else if(ch == '2')        {            printf("decode string:");            fflush(stdin);            memset(s,0,MAXLEN);            fgets(s,MAXLEN,stdin);            int len = strlen(s)-1;            src = (char *)malloc((len+1)*sizeof(char));            cipher = (char *)malloc((len+1)*sizeof(char));            strncpy(src,s,len);            src[len] = '\0';            exchage(src,len,0);            exchage(src,len,1);            i=0;            while(src[i])            {                cipher[i] = src[i]-i;                i++;            }            cipher[len] = '\0';            printf("%s\n",cipher);            free(src);        }        else if(ch == '3')            break;        printf("\n1:encode  2:decode  3:exit\nInput: ");        ch = getchar();    }    free(cipher);    printf("GameOver!\n");    return 0;}

代码太简单,就不解释了,看一下测试结果:
这里写图片描述

0 0
原创粉丝点击