‘壹’ c语言 数据加密
什么是异或算法
异或的特点是原始值经过两次异或某一个数后会变成原来的值,所以有时利用这个特性来进行加密,加密端把数据与一个密钥进行异或操作,生成密文。接收方收到密文后利用加密方提供的密钥进行再次异或操作就能得到明文。
例程:
/*以DWORD为单位对文件进行加密,将每个DWORD与0xfcba0000(密钥)做异或,写入另一个文件*/
#include<stdio.h>
#include<stdlib.h>
#defineDWORDunsignedlong
#defineBYTEunsignedchar
#definefalse0
#definetrue1
intmain(intargc,char*argv[])
{
FILE*hSource;
FILE*hDestination;
DWORDdwKey=0xfcba0000;
char*pbBuffer;
DWORDdwBufferLen=sizeof(DWORD);
DWORDdwCount;
DWORDdwData;
if(argv[1]==0||argv[2]==0)
{
printf("missingargument!
");
returnfalse;
}
char*szSource=argv[1];
char*szDestination=argv[2];
hSource=fopen(szSource,"rb");//打开源文件.
hDestination=fopen(szDestination,"wb");//打开目标文件
if(hSource==NULL){printf("openSourceFileerror!");returnfalse;}
if(hDestination==NULL){printf("openDestinationFileerror!");returnfalse;}
//分配缓冲区
pbBuffer=(char*)malloc(dwBufferLen);
do{
//从源文件中读出dwBlockLen个字节
dwCount=fread(pbBuffer,1,dwBufferLen,hSource);
//加密数据
dwData=*(DWORD*)pbBuffer;//char*TOdword
dwData^=dwKey;//xoroperation
pbBuffer=(char*)&dwData;
//将加密过的数据写入目标文件
fwrite(pbBuffer,1,dwCount,hDestination);
}while(!feof(hSource));
//关闭文件、释放内存
fclose(hSource);
fclose(hDestination);
printf("%sisencryptedto%s
",szSource,szDestination);
return0;
}
‘贰’ C语言数字加密
#include
void
main()
{
int
a[5];
/*
存储各位上的数字
*/
int
num,
temp,
encripy;
/*
num是要输入的数,temp是交换时用来存储临时值,encripy是加密后的数据
*/
int
i;
do
{
printf("please
input
the
number:");
scanf("%d",&num);
if(!(num/10000
!=0
&&
num/100000==0))
printf("data
error!\n");
}while(!(num/10000
!=0
&&
num/100000==0));
a[0]
=
num/10000%10;
/*
求各位上的数字
*/
a[1]
=
num/1000%10;
a[2]
=
num/100%10;
/*
百位上的数字
*/
a[3]
=
num/10%10;
/*
十位上的数字
*/
a[4]
=
num%10;
/*
个位上的数字
*/
for(i
=
0;
i
<
5;
++i)
/*
开始加密
*/
a[i]
=
(a[i]
+
8)%10;
temp
=
a[0];
/*
交换位置开始
*/
a[0]
=
a[3];
a[3]
=
temp;
temp
=
a[1];
a[1]
=
a[2];
a[2]
=
temp;
/*
交换位置结束同时加密结束
*/
encripy
=
a[0]*10000
+
a[1]*1000
+
a[2]*100
+
a[3]*10
+
a[4];
/*
加密后的数据
*/
printf("\nthe
scourse
number:
%d\n",
num);
/*
输出原数据
*/
printf("\nencripy
the
number:
%d\n\n",
encripy);
/*
输出加密后的数据
*/
}
在vc6.0成功运行,希望对你有帮助!
‘叁’ 跪求c语言加密解密思路,,!!
你的92是怎么得到523的?
/*解密的过程就是加密的逆过程,你加密的过程是:
1. 每位数都加7并对10进行取余
2. 第一位和第三位进行调换
那么解密的过程就可以是这样:
1. 第一位和第三位进行调换(现在就重新回到了原来的位置)
2. 每位数都减7并对10进行取余
可是,这里有一个问题:如果这位上的数小于7怎么办。解决方案是先加10再减7,最后的结果就是加3然后对10取余
*/
#include <stdio.h>
int jiemi(int m)
{
int i, j, a, s;
s = 0;
while(m)
{
a = m%10; //取出最后一位
s = s*10 + (a+3)%10;
m /= 10;
}
return s;
}
int main()
{
int n;
while(scanf("%d", &n)==1)
{
printf("%d 解密后: %d ", n, jiemi(n));
}
return 0;
}
‘肆’ C++程序设计题:输入一个三位数,将其加密后输出。加密方法是对该数的每一位数字,将其加6后除以10
#include<iostream>
usingnamespacestd;
//加密数字nNumber,输出加密后的数字
intEncryption(intnNumber)
{
intnResult=0;
do
{
intnCurrent=nNumber%10;
nNumber=nNumber/10;
nCurrent=(nCurrent+6)%10;
nResult=(10*nResult+nCurrent);
}while(nNumber>0);
returnnResult;
}
int_tmain(intargc,_TCHAR*argv[])
{
intnNumber=0;
cout<<"请输入一个三位数:"<<endl;
cin>>nNumber;
if(!(99<nNumber&&1000>nNumber))
{
cout<<"输入数字非法!"<<endl;
return0;
}
cout<<"加密后的数字为:"<<Encryption(nNumber)<<endl;
system("pause");
return0;
}
‘伍’ C++程序设计题:输入一个三位数,将其加密后输出。加密方法是对该数的每一位数字,将其加6后除以10取...
直接把该三位数对十取余,将每个余赋值给一个字母。也就是分解咯该三位数。然后对每个字母进行加6后对十取模,再重新赋值给该字母。最后就把它门按你说的换位组合起来就咯,
‘陆’ c语言 暴力破解密码箱密码,自己设定一个三位数的密码,然后通过使用三层For循环,把密码输出来
#include <stdio.h>
void main()
{
int password,i,j,k;
int t;
printf("请设置任意3位数密码:\n");
scanf("%d",&password);
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
for(k=0;k<9;k++)
{
t=i*100+j*10+k;
if(t==password)
{
printf("暴力破解得到密码为%d\n",t);
}
}
}
}
}
‘柒’ C++程序设计题:输入一个三位数,将其加密后输出。对该数的每一位数字,将其加6后除以10取
手机打字太难了
#include<iostream>
using namespace std;
int main()
{
int n=0;
printf("请输入一个三位数:");
while(n<100||n>999)
{
scanf("%d",&n);
}
printf("加密后:\n");
printf("%.1f %.1f %.1f",(n/100+6)/10.0,(n%100/10+6)/10.0,(n%10+6)/10.0);
return 0;
}
‘捌’ 如何用C语言编程一数字加密程序
楼上的不错,但如果你不会的话,可以用if语句;
输入原密码,用数组存储,再次输入时,从头按位比较,如果每一位数字都相同就可以通过
希望答案对你有帮助,如不满意可继续提问,若满意就提高一下悬赏金吧
‘玖’ C语言 三位数小密码程序
你可以参考相应的加密算法,根据这个算法来写程序。
‘拾’ 用C语言编写一个字符串加密程序要求在补充说明中
#include<stdio.h>
intmain()
{
intkey;
charstr[100];
intM;
inti;
while(1)
{
scanf("%d",&key);
M=key/100+key/10%10+key%10;
M%=27;
if(M)break;
printf("重新输入密钥 ");
}
gets(str);
for(i=0;str[i];i++)
{
charc;
if('A'<=str[i]&&str[i]<='Z')
c='A';
elseif('a'<=str[i]&&str[i]<='z')
c='a';
elsecontinue;
str[i]=(str[i]-c+M)%26+c;
}
puts(str);
return0;
}