读书人

新人字符加密的算法。有的就帮帮小弟我

发布时间: 2012-02-07 17:45:36 作者: rapoo

新人求一个字符加密的算法。。。有的就帮帮我吧。。。一帮的加密也可以。(在线等)
新人求一个字符加密的算法。。。有的就帮帮我吧。。。一帮的加密也可以。(在线等)

[解决办法]
CString code[16]={ "ad ", "eh ", "im ", "np ", "ru ", "vy ", "zc ", "gk ",
"pt ", "xb ", "fj ", "ox ", "wa ", "ei ", "nr ", "qu "};
CString reg,stred;
int num;
stred= "6R0KERLI ";
stred.MakeLower();
for(int i=0;i <8;i++)
{
char p=stred.GetAt(i);
if(p> = '0 '&&p <= '9 ')
num=p- '0 ';
else if(p> = 'a '&&p <= 'm ')
num=p- 'a ';
else
num=p- 'n ';
CString tmp=code[num];
reg+=tmp;
}

reg.MakeUpper();
GetDlgItem(IDC_EDIT1)-> SetWindowText(reg.Mid(0,17));

在家看看这个可以不可以不可以

[解决办法]
这不知道会不会越界
[解决办法]
#include "stdafx.h "
#include <iostream>
#include <bitset>
using namespace std;

char test(char ch)
{
bitset <sizeof(char) * 8> mych(ch);
mych.flip();
return static_cast <char> (mych.to_ulong());
}
int _tmain(int argc, _TCHAR* argv[])
{
char ch = 'a ';
ch = test(ch);
cout < < ch < < endl;
ch = test(ch);
cout < < ch < < endl;
return 0;
}
[解决办法]
很简单的一个 按位取反加密
[解决办法]
http://www.sfcode.cn/soft/002753447.htm
[解决办法]
#include "stdafx.h "
#include "encode.h "

//////////////////////////////////////////////////////////////////////////
// 单字符ascii移位(针对32~255)
char foo(char x, int offset) // offset 取值可以为-256~256之间
{
unsigned char n = (unsigned char)x;
if (n > = 32)
{
n = ((n-32) + offset + 448) % 224 + 32; // 加448是为防止出现负值
}
return (char)n;
}

//////////////////////////////////////////////////////////////////////////
//
// 加密
//
// 1. 对字符进行逐个加密,逐个采用key中的字符作为位移量;
// 2. 每加密完一个字符,再以此结果为位移量,将后面的各个字符都进行位移。
//
void encode(const char* src, const char* key, char* dest)
{
strcpy(dest, src);

int klen = strlen(key);
if (klen <=0) return;

int len = strlen(src);
for (int i=0; i <len; i++)
{
dest[i] = foo(dest[i], key[i%klen]);
unsigned char index = ((unsigned char)dest[i]) % klen;
char offset = key[index];
for (int j=i+1; j <len; j++)
{
dest[j] = foo(dest[j], offset);
}
}
dest[i] = 0;
}

//////////////////////////////////////////////////////////////////////////
//
// 解密
//
void decode(const char* dest, const char* key, char* res)
{
strcpy(res, dest);

int klen = strlen(key);


if (klen <=0) return;

int len = strlen(dest);
for (int i=strlen(dest)-1; i> =0; i--)
{
unsigned char index = ((unsigned char)res[i]) % klen;
unsigned char offset = (unsigned char)key[index];
res[i] = foo(res[i], -(unsigned char)key[i%klen]);
for (int j=i+1; j <len; j++)
{
res[j] = foo(res[j], -offset);
}
}
res[i] = 0;
}

[解决办法]
谢谢。。。。大家哦。。。我先去试试哦
[解决办法]
最简单的,依次异或你的密码.

读书人网 >C++

热点推荐