Ⅰ c语言编写的程序,在输入密码时,如何加密
加密和解密算法是程序编制中的重要一环。试想,如果我们平时使用的腾讯QQ、支付宝支付密码、今日头条账号密码那么轻易就被别人盗取的话,很多不可以预料的事情就会发生!
在现实生活中,我们遇到过太多QQ密码被盗取的情况,有的朋友QQ被盗之后,骗子利用朋友间信任骗取钱财的事情屡见不鲜。支付宝也曾出现过支付宝账户被恶意盗取的事件,对用户利益造成了严重损害!这些在技术上都指向了同一相关问题:软件加密算法的强壮程度。今天,小编利用C语言来简单实现一种加密方法。下面是源代码。
需要说明:程序利用了ascii码值的按照一定规律变换实现加密,对于解密过程,则是加密的逆过程。下面是程序的运行结果。
4190阅读
搜索
编程免费课程300节
初学编程100个代码
java自学一般要学多久
5秒破解excel密码
python必背100源代码
40岁零基础学编程
Ⅱ 简单的C语言加密程序
#include
#include
main()
{
intkey;
charch;
printf("\n请输入密钥:");
scanf("%d",&key);
printf("得到对应明文如下:");
while((ch=getchar())!='\r')
(ch+key)>122?putchar(ch-122+33+key):
((ch+key)<33?putchar(ch+122+key):putchar(ch+key));
}
输入输出如下:
请输入密钥:20addse
得到对应明文如下:uxx.y
你先输入一个任意的整数,如20,然后在键盘上输入一段任意的字符如addse
按回车键结束,就会得到结果如:uxx.y
下面是另一组输入输出:
请输入密钥:35asjRYIRER!@#$^^*&
得到对应明文如下:+=4u#luhuDcFG((MI-
具体是如何加密,你应该能看懂,就是用一个三目运算符?:控制。
Ⅲ C语言 文件加密
告诉你个最简单的方案:用CreateProcess调用winrar.exe,再给个压缩密码就OK。winrar的安装文档里就有各种参数的设置方法。
不然的话,你也可以去MSDN上翻翻WIN32的加密函数。
再不行,你也可以用最简单的异或法自己加密。
Ⅳ C语言如何进行字符加密
进行字符加密是很多种的。
数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码为“密文”,使其只能在输入相应的密钥之后才能显示出原容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。
Ⅳ C语言怎样给文件加密
这个加密有简单的,有复杂的。要是简单的就直接选择文件中的某些字段,将某些字段进行1定的转换或在文件中位置的变更等。也能够将其中的每一个2进制读取,然落后行1定的运算后再存储,到达加密的效果。最后再依照1定的逆操作,恢复原来的文件,到达解密的效果。大致思路就是这样的,具体就看你的加解密的算法复杂与否了!举个非常简单的例子,可以将读取的某个数与1个你自己知道的固定的数做“异或”运算,解密的时候,你再次和这个数做“异或”运算,就能够恢复原来的那个数。这就是1种简单的加密算法,看似简单,不过却比较经常使用,由于,参与异或运算的值只有你自己知道。
Ⅵ 编写函数完成字符串的加密与解密(c语言)
C语言代码和运行结果如下:
输出符合示例,加解密均正确,望采纳~
附源码链接:字符串加解密
Ⅶ RSA加密解密算法示例(C语言)
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <time.h>
#define PRIME_MAX 200 // 生成素数范围
#define EXPONENT_MAX 200 // 生成指数e范围
#define Element_Max 127 // 加密单元的最大值,这里为一个char, 即1Byte
char str_read[100]="hello world !"; // 待加密的原文
int str_encrypt[100]; // 加密后的内容
char str_decrypt[100]; // 解密出来的内容
int str_read_len; // str_read 的长度
int prime1, prime2; // 随机生成的两个质数
int mod, eular; // 模数和欧拉数
int pubKey, priKey; // 公钥指数和私钥指数
// 生成随机素数,实际应用中,这两个质数越大,就越难破解。
int randPrime()
{
int prime, prime2, i;
next:
prime = rand() % PRIME_MAX; // 随机产生数
if (prime <= 1) goto next; // 不是质数,生成下一个随机数
if (prime == 2 || prime == 3) return prime;
prime2 = prime / 2; // prime>=4, prime2 的平方必定大于 prime , 因此只检查小于等于prime2的数
for (i = 2; i <= prime2; i++) // 判断是否为素数
{
if (i * i > prime) return prime;
if (prime % i == 0) goto next; // 不是质数,生成下一个随机数
}
}
// 欧几里德算法,判断a,b互质
int gcd(int a, int b)
{
int temp;
while (b != 0) {
temp = b;
b = a % b;
a = temp;
}
return a;
}
//生成公钥指数,条件是 1< e < 欧拉数,且与欧拉数互质。
int randExponent()
{
int e;
while (1)
{
e = rand() % eular; if (e < EXPONENT_MAX) break;
}
while (1)
{
if (gcd(e, eular) == 1) return e; e = (e + 1) % eular; if (e == 0 || e > EXPONENT_MAX) e = 2;
}
}
//生成私钥指数
int inverse()
{
int d, x;
while (1)
{
d = rand() % eular;
x = pubKey * d % eular;
if (x == 1)
{
return d;
}
}
}
//加密函数
void jiami()
{
str_read_len = strlen(str_read); //从参数表示的地址往后找,找到第一个'\0',即串尾。计算'\0'至首地址的“距离”,即隔了几个字符,从而得出长度。
printf("密文是:");
for (int i = 0; i < str_read_len; i++)
{
int C = 1; int a = str_read[i], b = a % mod;
for (int j = 0; j < pubKey; j++) //实现加密
{
C = (C*b) % mod;
}
str_encrypt[i] = C;
printf("%d ", str_encrypt[i]);
}
printf("\n");
}
//解密函数
void jiemi()
{
int i=0; for (i = 0; i < str_read_len; i++)
{
int C = 1; int a = str_encrypt[i], b=a%mod;
for (int j = 0; j < priKey; j++)
{
C = (C * b) % mod;
}
str_decrypt[i] = C;
}
str_decrypt[i] = '\0'; printf("解密文是:%s \n", str_decrypt);
}
int main()
{
srand(time(NULL));
while (1)
{
prime1 = randPrime(); prime2 = randPrime(); printf("随机产生两个素数:prime1 = %d , prime2 = %d ", prime1, prime2);
mod = prime1 * prime2; printf("模数:mod = prime1 * prime2 = %d \n", mod); if (mod > Element_Max) break; // 模数要大于每个加密单元的值
}
eular = (prime1 - 1) * (prime2 - 1); printf("欧拉数:eular=(prime1-1)*(prime2-1) = %d \n", eular);
pubKey = randExponent(); printf("公钥指数:pubKey = %d\n", pubKey);
priKey = inverse(); printf("私钥指数:priKey = %d\n私钥为 (%d, %d)\n", priKey, priKey, mod);
jiami(); jiemi();
return 0;
}
Ⅷ C语言怎么加密字符
#include<stdio.h>
#include<string.h>
intmain()
{
charstr[]="00000",str2[]="00000",*p=str,*p2=str2;
printf("输入5个字母:");
while(*p!=0)
{
scanf("%c",p);
if(*p=='
')
continue;
if(*p<'A'||(*p>'Z'&&*p<'a')||*p>'z')//输入验证,必须是字母
{
printf("只能输入字母,请重新输入
");
p=str;
p2=str2;
fflush(stdin);//输入有错重新输入前清空缓冲区。fflush属于c扩展函数,正常使用没问题,如需在linuxggc上使用,考虑多次调用getchar函数来清空
}
else
{
*p2=(*p)+4;
if(*p2>90&&*p2<97)//大写字母加4,最大位不超出
*p2='A'+(*p2-90)-1;
if(*p2>122)//小写字母加4,最大位不超出
*p2='a'+(*p2-122)-1;
p2++;
p++;
}
}
printf("原字符串为:%s
加密后的字符串为:%s
",str,str2);
return0;
}
Ⅸ c语言文件加密和解密
c语言文件加密和解密方法如下:
1、首先打开VC++6.0;
voidDecryptFile(FILE*sfp,FILE*dfp,charpwd)
{
charch;
while((ch=fgetc(sfp))!=EOF)
{
if((ch>='a')&&(ch<='z'))
{
ch=ch^pwd;
ch=(ch-'a'+25)%26+'a';
}
if((ch>='A')&&(ch<='Z'))
{
ch=ch^pwd;
ch=(ch-'A'+25)%26+'A';
}
fputc(ch,dfp);
}
}
输出函数,输出文件内容
voidOutputFile(FILE*fp)
{
charch;
while((ch=fgetc(fp))!=EOF)
putchar(ch);
}
主函数,主要调用这几个函数
intmain()
{
/*用户输入的要加密的文件名*/
charsfilename[20];
/*用户输入加密后保存的文件名*/
chardfilename[20];
/*用来保存密码字符*/
charpwd;
FILE*sfp,*dfp;
printf(":
");
/*得到要加密的文件名*/
gets(sfilename);
/*得到加密后你要的文件名*/
printf(":
");
gets(dfilename);
/*得到加密字符*/
printf("PleaseinputyourPassword:
");
//scanf("%c",&pwd);
pwd=getch();
/*屏幕以*来表示输入的加密字符*/
printf("*
");
/*以只读方式打开要加密的文件*/
if((sfp=fopen(sfilename,"r"))==0)
{
printf("Can'topenthefile:%s
",sfilename);
exit(0);
}
/*输出要加密的文件*/
printf(":
");
OutputFile(sfp);
/*建立加密后的文件*/
if((dfp=fopen(dfilename,"w+"))==0)
{
printf("Can'topenorcreatethefile:%s
",dfilename);
//exit(0);
}
/*文件加密*/
fseek(sfp,0L,SEEK_SET);
EncryptFile(sfp,dfp,pwd);
printf("
Encryptedthefilesuccessfully!
");
/*输出加密后的文件*/
printf(":
");
fseek(dfp,0L,SEEK_SET);
OutputFile(dfp);
fclose(sfp);
fclose(dfp);
getch();
return0;
}
Ⅹ 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;
}