读书人

哪位高手能帮忙看下凯撒密码

发布时间: 2012-03-23 12:06:21 作者: rapoo

谁能帮忙看下凯撒密码啊
谁能帮我用C++写一下凯撒密码密码加密解密算法啊 我写了好久,但是总是错,下面是我写的(经过很多次乱改已经乱七八糟了)谁能帮我写一下啊。
#include <iostream.h>
#include <windows.h>
class Casesar
{
protected:
static int n;
static char *ptr;
char *lptr;
char *i;
char *j;

public:
Casesar(char *arr,int k,int m)
{
ptr=new char [m];
lptr=new char [m];
ptr=arr;
n=k;
cout < <ptr < <endl;
}
void addcasesar()
{
i=lptr;
while(ptr!= '\0 ')
{
*i=(*ptr+n)%26+78;
cout < <*i < <endl;
ptr++;
i++;
}
cout < <lptr < <endl;

}
void jiecasesar()
{
j=ptr;
while(lptr!= '\0 ')
{
*j=(*lptr-n)%26+78;
lptr++;
j++;
}
cout < <ptr < <endl;

}
~Casesar()
{

delete [] ptr;

delete [] lptr;
}
};
int Casesar::n=0;
char * Casesar::ptr=0;
//char * Casesar::lptr=0;
void main()
{
//const MAXSIZE 20;

char buffer[20]= "abcdef ";
Casesar A(buffer,3,20);
A.addcasesar;


//A.jiecasesar;
//
}


[解决办法]
#include <string.h>
#include <stdio.h>
#include <malloc.h>

#define OFFSET 3

void Add(char *dec, char *src)
{
char *p = src;
for (unsigned int i = 0; i < strlen(p); i++)
{
if (*src > 'a ' && *src < 'z ')
*dec++ = (*src++ + OFFSET - 'a ') % 26 + 'a ';
else if (*src > 'A ' && *src < 'Z ')
*dec++ = (*src++ + OFFSET - 'A ') % 26 + 'A ';
else
*dec++ = *src++;
}
*dec = '\0 ';
}

void Jie(char *dec, char *src)
{
char *p = src;
for (unsigned int i = 0; i < strlen(p); i++)
{
if (*src > 'a ' && *src < 'z ')
*dec++ = (*src++ +26 - OFFSET - 'a ') % 26 + 'a ';
else if (*src > 'A ' && *src < 'Z ')
*dec++ = (*src++ +26 - OFFSET - 'A ') % 26 + 'A ';
else
*dec++ = *src++;
}
*dec = '\0 ';
}

void main()
{
char str[] = "bsf SDFerer ";

char *p = (char *)malloc(strlen(str)+1);
memset(p, 0, strlen(str)+1);

Add(p, str);
printf( "%s\n ", p);

strcpy(str, p);
Jie(p, str);
printf( "%s\n ", p);

free(p);
p = NULL;
}

没写成类的形式,用C了, 偏移自己设,暂时define 3

读书人网 >C++

热点推荐