想问大家加密程序怎么写?

jianshi051 2006-12-08 08:29:39
论坛上经常看到有加密的程序代码,但是不知道具体是什么原理,没有们知道的人来说说看,本人知道的加密方法就是在内容的ASCII码上加一些减一些数字而已,还没有们什么更高级的加密方法? 谢谢:)
...全文
378 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
cugb31032 2006-12-09
  • 打赏
  • 举报
回复
是不是感觉数学上不可思议?+-*/都可逆啊?

简单说一下 不可逆他们用的是数论,就是用质数、合数、素数来计算的,我们找两个质数(素数),53,47。你把他们相乘2491,然后你问把2491拆成两个整数乘积(不含1)估计你就不会拆了把?

当两个数很大的时候,计算机也会郁闷,这就是不可逆的来源。
lei001 2006-12-09
  • 打赏
  • 举报
回复
转置和置换。
cugb31032 2006-12-09
  • 打赏
  • 举报
回复
加密算法我知道的是分两种,
一种是可逆算法:
他们的加密强度基本一样,只要让人知道你的算法,你的密码就是形同虚设,至于什么算法,个人习惯,保密性都差不多。
一种是不可逆算法:
这里也分两种,一种单向,一种双向

单向的就是论坛常用的,md5等加密。对密码加密了,就无法解密,只能把输入的密码重新加密,看加密后的数据和以前一不一样来判断是否正确认。这种加密只能用于密码,不能用于数据,因为不可逆。这种加密的保密性和和算法的强度相关。

双向的就是加密用一种密码钥匙(一种数据用来与被加密数据进行运算),用它只能加密,不能解密(不是规定不能,而是他就是解不开,就像自己写得自己都不认识,只有一个特定的人认识)。解密用另外一种钥匙(解密钥匙不能用于加密)。两把钥匙是同时生成的。放在不同地方起作用。要想知道这中加密解密算法,你就要看很多书了,现在银行的数字证书就是这么加密的。
systemthink 2006-12-09
  • 打赏
  • 举报
回复
这个还不错
jianshi051 2006-12-09
  • 打赏
  • 举报
回复
恩 好的 谢谢各位了~
OOPhaisky 2006-12-08
  • 打赏
  • 举报
回复
加密方法有很多,不仅仅是变换字符之类的简单方法,有些加密算法非常的复杂。

楼主如果对这方面感兴趣,看看“密码学”方面的书,会有收获的。
todototry 2006-12-08
  • 打赏
  • 举报
回复
最简单的这样

一次异或加密
一次异或解密
用汇编写过一个,给你看看吧

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

#define TRUE 1

void TranslateBuffer(char * buffer, unsigned count, string encryptCode)
{
__asm{
mov esi, buffer
mov ecx, count
mov al, encryptCode

L1:
xor [esi], al
inc esi
loop L1
}
}

int main()
{
const int BUFFERSIZE(200);
char szBuf[BUFFERSIZE] = "";

unsigned int count(0);

string encryptCode("");
do
{
cout << "Please intput the encrypt code:" << endl;
cin >> encryptCode;

if (encryptCode.size() != 1)
{
cout << "Please input one character!" << endl;
cout << endl;
cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;
}
else
{
break;
}
} while(TRUE);


ifstream infile("in.txt", ios::binary);
ofstream outfile1("out1.txt", ios::binary);
ofstream outfile2("out2.txt", ios::binary);

while (!infile.eof())
{
infile.read(szBuf, BUFFERSIZE);
count = infile.gcount();
TranslateBuffer(szBuf, count, encryptCode);
outfile1.write(szBuf, count);
TranslateBuffer(szBuf, count, encryptCode);
outfile2.write(szBuf, count);
}

return 0;
}
个人意见,高手多多指教
jixingzhong 2006-12-08
  • 打赏
  • 举报
回复
比如最简单的 移位、替换:

unsigned long table[256]={/*256 harcoded entry*/}

int main(int argc, char* argv[])
{
if(argc!=2){return 0;}
string buff = "EasyMail";
buff+=argv[1];
buff+="majian";
char* password=(char*)buff.c_str();//"EasyMailadminmajian";
int ecx = strlen(password);
unsigned long eax = 0xfffffffa;
int esi = ecx;
ecx --;
char* edx = password;

while (esi !=0)
{
unsigned long edi;
ecx=*edx;
edi=eax&0xff;
ecx=ecx^edi;
eax=eax>>8;
ecx=table[ecx];
eax=eax ^ ecx;
edx++;
esi--;
}
eax=~eax;

printf("%08lx\n",eax);
return 0;
}
jixingzhong 2006-12-08
  • 打赏
  • 举报
回复
看看 密码学 的书籍,
楼主你问原理,
那就得看看 加密理论了 ~~
tsst 2006-12-08
  • 打赏
  • 举报
回复
路过
lann64 2006-12-08
  • 打赏
  • 举报
回复
去看相关书籍吧,加密都发展成单独一门学科了,不是论坛里就能介绍清楚的。
xuzheng318 2006-12-08
  • 打赏
  • 举报
回复
http://bbs.linuxost.org/simple/index.php?t3351.html

参考此文!
AllenCpp 2006-12-08
  • 打赏
  • 举报
回复
RSA算法用的比较多,去查查相关的网络安全的书籍吧
missilery 2006-12-08
  • 打赏
  • 举报
回复
加密与解密(第二版)
http://www.dearbook.com/book/12309
sclarkca810619 2006-12-08
  • 打赏
  • 举报
回复
恩那
snow_kit 2006-12-08
  • 打赏
  • 举报
回复
最简单的做个一异或 运算

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧