导航:首页 > 文档加密 > c加密

c加密

发布时间:2022-02-16 20:12:46

‘壹’ c语言 字符的加密

在加密的时候,加入超过Z
,你就去取余数(ASII码)
,但是在解密的时候,你减去加密数字,可能会小余A的(ASII),加个判断,小于0就加上A的(ASII)。具体实现方法你就自己去编程。我提供了思路。

‘贰’ c语言加密算法

看你催就仓促写了个,自我感觉写的不是很好,但是能用了。数据只能是大写字母组成的字符串。
加密的时候,输入Y,然后输入要加密的文本(大写字母)
解密的时候,输入N,然后输入一个整数n表示密文的个数,然后n个整数表示加密时候得到的密文。
/*RSA algorithm */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MM 7081
#define KK 1789
#define PHIM 6912
#define PP 85
typedef char strtype[10000];
int len;
long nume[10000];
int change[126];
char antichange[37];

void initialize()
{ int i;
char c;
for (i = 11, c = 'A'; c <= 'Z'; c ++, i ++)
{ change[c] = i;
antichange[i] = c;
}
}
void changetonum(strtype str)
{ int l = strlen(str), i;
len = 0;
memset(nume, 0, sizeof(nume));
for (i = 0; i < l; i ++)
{ nume[len] = nume[len] * 100 + change[str[i]];
if (i % 2 == 1) len ++;
}
if (i % 2 != 0) len ++;
}
long binamod(long numb, long k)
{ if (k == 0) return 1;
long curr = binamod (numb, k / 2);
if (k % 2 == 0)
return curr * curr % MM;
else return (curr * curr) % MM * numb % MM;
}
long encode(long numb)
{ return binamod(numb, KK);
}
long decode(long numb)
{ return binamod(numb, PP);
}
main()
{ strtype str;
int i, a1, a2;
long curr;
initialize();
puts("Input 'Y' if encoding, otherwise input 'N':");
gets(str);
if (str[0] == 'Y')
{ gets(str);
changetonum(str);
printf("encoded: ");
for (i = 0; i < len; i ++)
{ if (i) putchar('-');
printf(" %ld ", encode(nume[i]));
}
putchar('\n');
}
else
{ scanf("%d", &len);
for (i = 0; i < len; i ++)
{ scanf("%ld", &curr);
curr = decode(curr);
a1 = curr / 100;
a2 = curr % 100;
printf("decoded: ");
if (a1 != 0) putchar(antichange[a1]);
if (a2 != 0) putchar(antichange[a2]);
}
putchar('\n');
}
putchar('\n');
system("PAUSE");
return 0;
}
测试:
输入:
Y
FERMAT
输出:
encoded: 5192 - 2604 - 4222
输入
N
3 5192 2604 4222
输出
decoded: FERMAT

‘叁’ C语言 加密算法

#include<stdio.h>

#include<string.h>

#defineMAX_LEN1024

#defineMAX_KEY_LEN10

/*key必须是1-9之间的数字*/

/*拥有K个字符的Key,包含且仅包含1-K*/

intCheckKey(char*key)

{

inti,check[MAX_KEY_LEN]={0};

intmax=strlen(key);

intkeyVal;

for(i=0;i<max;i++)

{

keyVal=key[i]-'0';

if(keyVal>max||keyVal<1)

return0;

if(check[keyVal]==1)

return0;

else

check[keyVal]=1;

}

return1;

}

intEncrypt(char*word,char*key,char*secretWord)

{

inti,start;

intnLenWord=strlen(word);

intnLenKey=strlen(key);

intindex[MAX_KEY_LEN];

if(nLenWord%nLenKey!=0)

{

printf("明文的位数不是密钥位数的整数倍! ");

return0;

}

for(i=0;i<nLenKey;i++)

{

index[i]=key[i]-'0'-1;

}

/*START关键代码*/

start=0;

while(start<nLenWord)

{

for(i=0;i<nLenKey;i++)

{

secretWord[start+i]=word[start+index[i]];

}

start+=nLenKey;

}

secretWord[nLenWord]='';

/*END关键代码*/

return1;

}

intmain()

{

charword[MAX_LEN];

charkey[MAX_KEY_LEN];

charsecretWord[MAX_LEN];

printf("请输入明文:");

scanf("%1024s",word);

printf("请输入密钥:");

scanf("%10s",key);

if(!CheckKey(key))

{

printf("密钥输入错误! ");

exit(-1);

}

if(Encrypt(word,key,secretWord))

printf("密文是:%s ",secretWord);

return0;

}

‘肆’ 怎样用C语言加密啊

凯撒密码。我写下,有问题,再找。要保证输入的都是小写字母。
#include<stdio.h>
int
main()
{
char
str[100];
int
i;
scanf("%s",str);
for(i=0;str[i]!='\0';i++)
str[i]=(str[i]-'a'+3)%26+'A';
printf("%s\n",str);
return
0;
}

‘伍’ C语言密码加密,求解释

很高兴能为你解答!这是一个很普通的程序。
char a[5];这串代码的意思是(定义一个字符数组元素为5个)。

for(i=0;i<5;i++)
{
scanf("%c",&a[i]);
}这串代码的意思是(用了一个for循环条件为5次,每次要求用户输入一个字符,共输入五次)。
for(m=0;m<5;m++)
{
a[m]=a[m]+4;
}这串代码也是一个循环体,循环五次,每次都会进行运算表达式,a[m]=a[m]+4;这里的是每次将a[m]+4在赋给a[m]。如果还有什么不明白可以追问。

‘陆’ 怎样用C给字符加密

利用ASC码,字符与数字的对应关系,你可以将任意字符加上任意规律的数字输出,反之则解密。

‘柒’ C加密程序怎样加密文件

你加密的目的是什么呢?
你也不把文件给大家看...
我告诉你个办法吧,不需要软件,利用DOS命令就可以达到目的了...
1.在DOS下,随便进入哪个盘(文件夹).
2.用DOS命令创建文件夹(文件夹的名字).
3.在运行里面打开那个文件夹.(会弹开你创建的文件夹)
4.再把想要保密的东西cut进去,正常关闭.
这个文件夹会显示在你的盘符里面,但是不能正常打开,只有用第3步打开.
最后,想删除这个文件夹,也得用DOS命令删除!!
DOS命令你就自己去查吧..呵呵.

‘捌’ 如何将c:加密不能打开

如何给整个C盘加密,不让别人打开我的C盘?

计算机硬盘加密的四种方法

修改硬盘分区表信息、对硬盘启动加口令、对硬盘实现用户加密管理、对某个逻辑盘实现写保护,四大方法加密硬盘数据。
一、修改硬盘分区表信息
硬盘分区表信息对硬盘的启动至关重要,找不到有效的分区表,将不能从硬盘启动或即使从软盘启动也找不到硬盘。通常,第一个分区表项的第0子节为80H,表示C盘为活动DOS分区,硬盘能否自举就依*它。若将该字节改为00H,则不能从硬盘启动,但从软盘启动后,硬盘仍然可以访问。分区表的第4字节是分区类型标志,第一分区的此处通常为06H,表示C盘为活动DOS分区,若对第一分区的此处进行修改可对硬盘起到一定加密作用。
具体表现在:
1.若将该字节改为0,则表示该分区未使用,当然不能再从C盘启动了。从软盘启动后,原来的C盘不见了,你看到的C盘是原来的D盘,D盘是原来的E盘,依此类推。
2.若将此处字节改为05H,则不但不能从硬盘启动,即使从软盘启动,硬盘的每个逻辑盘都不可访问,这样等于整个硬盘被加密了。另外,硬盘主引导记录的有效标志是该扇区的最后两字节为55AAH。若将这两字节变为0,也可以实现对整个硬盘加锁而不能被访问。硬盘分区表在物理0柱面0磁头1扇区,可以用NortonforWin95中的Diskedit直接将该扇区调出并修改后存盘。或者在Debug下用INT13H的02H子功能将0柱面0磁头1扇区读到内存,在相应位置进行修改,再用INT13H的03H子功能写入0柱面0磁头1扇区就可以了。
上面的加密处理,对一般用户来讲已足够了。但对有经验的用户,即使硬盘不可访问,也可以用INT13H的02H子功能将0柱面0磁头1扇区读出,根据经验将相应位置数据进行修改,可以实现对硬盘解锁,因为这些位置的数据通常是固定的或有限的几种情形。另外一种保险但显得笨拙的方法是将硬盘的分区表项备份起来,将其全部变为0,这样别人由于不知道分区信息,就无法对硬盘解锁和访问硬盘了。

二、对硬盘启动加口令
我们知道,在CMOS中可以设置系统口令,使非法用户无法启动计算机,当然也就无法使用硬盘了。但这并未真正锁住硬盘,因为只要将硬盘挂在别的计算机上,硬盘上的数据和软件仍可使用。要对硬盘启动加口令,可以首先将硬盘0柱面0磁头1扇区的主引导记录和分区信息都储存在硬盘并不使用的隐含扇区,比如0柱面0磁头3扇区。用Debug重写一个不超过512字节的程序(实际上100多字节足矣)装载到硬盘0柱面0磁头1扇区。该程序的功能是执行它时首先需要输入口令,若口令不对则进入死循环;若口令正确则读取硬盘上存有主引导记录和分区信息的隐含扇区(0柱面0磁头3扇区),并转去执行主引导记录。
由于硬盘启动时首先是BIOS调用自举程序INT19H将主硬盘的0柱面0磁头1扇区的主引导记录读入内存0000:7C00H处执行,而我们已经偷梁换柱,将0柱面0磁头1扇区变为我们自己设计的程序。这样从硬盘启动时,首先执行的不是主引导程序,而是我们设计的程序。在执行我们设计的程序时,口令若不对则无法继续执行,也就无法启动了。即使从软盘启动,由于0柱面0磁头1扇区不再有分区信息,硬盘也不能被访问了。当然还可以将我们设计的程序像病毒一样,将其中一部分驻留在高端内存,监视INT13H的使用,防止0柱面0磁头1扇区被改写。

三、对硬盘实现用户加密管理
UNIX操作系统可以实现多用户管理,在DOS系统下,将硬盘管理系统进行改进,也可实现类似功能的多用户管理。该管理系统可以满足这样一些要求:1.将硬盘分为公用分区C和若干专用分区D。其中“超级用户”来管理C区,可以对C区进行读写和更新系统;“特别用户”(如机房内部人员)通过口令使用自己的分区,以保护自己的文件和数据;“一般用户”(如到机房上机的普通人员)任意使用划定的公用分区。后两种用户都不能对C盘进行写操作,这样把操作系统和大量应用软件装在C盘,就能防止在公共机房中其他人有意或无意地对系统和软件的破坏,保证了系统的安全性和稳定性。2.在系统启动时,需要使用软盘钥匙盘才能启动系统,否则硬盘被锁住,不能被使用。此方法的实现可通过利用硬盘分区表中各逻辑盘的分区链表结构,采用汇编编程来实现。

四、对某个逻辑盘实现写保护
我们知道,软盘上有写保护缺口,在对软盘进行写操作前,BIOS要检查软盘状态,写保护缺口被封住,则不能进行写操作。而写保护功能对硬盘而言,在硬件上无法进行,但可通过软件来实现。在DOS系统下,磁盘的写操作包当然,看http://www.17ush.com

PS:给自己玩玩我不反对,可不要用来干坏事儿哦~

‘玖’ 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加密相关的资料

热点内容
怎么查找云服务器上的ftp 浏览:156
我的世界服务器如何注册账号 浏览:934
统计英文字符python 浏览:423
linux信息安全 浏览:908
压缩机接线柱爆 浏览:999
程序员自主创业 浏览:584
汇编程序员待遇 浏览:359
怎么批量有顺序的命名文件夹 浏览:211
杭州程序员健身 浏览:19
dvd光盘存储汉子算法 浏览:758
苹果邮件无法连接服务器地址 浏览:963
phpffmpeg转码 浏览:672
长沙好玩的解压项目 浏览:145
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:486
h3c光纤全工半全工设置命令 浏览:143