c连接字符串加密
恰巧这两天刚看的一种思路,很简单的加密解密算法,我说一下吧。
算法原理很简单,假设你的原密码是A,用A与数B按位异或后得到C,C就是加密后的密码,用C再与数B按位异或后能得回A。即(A异或B)异或B=A。用C实现很简单的。这就相当于,你用原密码A和特定数字B产生加密密码C,别人拿到这个加密的密码C,如果不知道特定的数字B,他是无法解密得到原密码A的。对于密码是数字的情况可以用下面的代码:
#includestdio.h#defineBIRTHDAY19880314intmain(){longa,b;scanf(%ld,a)
;printf(原密码:%ld\n,a);b=BIRTHDAY;a^=b;printf(加密密码:%ld\n,a);a^=b;printf(解密密码:%ld\n,a);return0;
}如果密码是字符串的话,最简单的加密算法就是对每个字符重新映射,只要加密解密双方共同遵守同一个映射规则就行啦。
2. 利用C语言给文字加密,急~
这里面用到的大部分都是对字符串的基本操作。谭浩强C语言书上都能找到的。里面我都有注释了。有什么疑问再说
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int key[3][3]={6,24,1 , //密钥
13,16,10 ,
20,17,15 ,};
int prech(char a[],char b[][3]) //预处理,返回明文的组数
{
int i=0,j=0;
for (; *a!='\0'; ++a)
if (isalpha(*a)) //isalpha判断是否为字母
{
b[i][j]=tolower(*a)-'a'; //b[][]存放每一组明文,3个字母为一组。tolower函数是把大写变小写,并-a使之变成对应的数字
++j;
if (j==3)
{
j=0;
++i;
}
}
while(j!=3 && j!=0) //后面不够的用a补齐
{
b[i][j]=0;
j++;
}
return i;
}
void solve(char b[][3],int n) //求密文
{
int i,j;
char c[3];
for(i=0;i<n;i++)
{
for(j=0;j<3;j++) //算出b[i]组的值存放到c数组中
{
c[j]=(b[i][0]*key[j][0]+b[i][1]*key[j][1]+b[i][2]*key[j][2])%26+'A';
}
for(j=0;j<3;j++)
b[i][j]=c[j]; //把c数组的内容还给b[i]组
}
return ;
}
int main(void)
{
int len,i,j;
char s[100]; //明文
char b[40][3]; //3个为一组,存放每一组的字母对应的数字
scanf("%s",s);
len=prech(s,b);
solve(b,len);
for(i=0;i<len;i++)
for(j=0;j<3;j++)
printf("%c",b[i][j]);
printf("\n");
return 0;
}
3. c语言实现密码加密
unsignedchar*encrypt(unsignedchar*psw,intenc){
intsum=0,i;
if(enc){
for(i=0;i<6;i++){
psw[i]-=15;
sum+=psw[i];
}
psw[6]=(unsignedchar)sum;
psw[7]=0;
}
else{
for(i=0;i<6;i++){
sum+=psw[i];
psw[i]+=15;
}
if((unsignedchar)sum!=psw[6]){
printf("Badpassword ");
psw[0]=0;
returnpsw;
}
else{
psw[6]=0;
}
}
for(i=0;i<3;i++){
unsignedchart=psw[i];
psw[i]=psw[5-i];
psw[5-i]=t;
}
returnpsw;
}
intmain()
{
unsignedcharpsw[128];
scanf("%s",psw);
printf("encodeto:%s ",encrypt(psw,1));
printf("decodeto:%s ",encrypt(psw,0));
return0;
}
4. c语言编写字符串加密函数 不要写得太难啊
#include<stdio.h>
#include<ctype.h>
char*encrypt(char*text){
charc;
char*p=text;
for(;*text;++text){
c=*text;
if(isdigit(c))
*text='0'+'9'-c;
elseif(islower(c)){
c=c+3;
if(c>'z')
c=c-26;
*text=c;
}elseif(isupper(c)){
c=c+3;
if(c>'Z')
c=c-26;
*text=c;
}
}
returnp;
}
intmain(){
chartext[100];
printf("输入明文:");
scanf("%s",text);
printf("密文:%s ",encrypt(text));
getchar();
}