本篇文章给大家谈谈简单的加密算法题以及对应的知识点,希望对各位有所帮助。
你的加密有问题 会有歧义码:
比如0-3 9-3 如果还原的话 3 还原到0,9就丢失了:
因为-1%9 = -1 所以要还原必须再多加一个周期
(9-1)%9 = 8:
void DeChar(char* p)
{
for( int i=0; istrlen(p); i++ )
{
if (p[i] = '0' p[i] = '9' )
{
p[i] = (((p[i] - 3 + '9'-'0') - '0') % ('9'-'0')) + '0';
}else if( p[i] = 'a' p[i] = 'z' )
{
p[i] = (((p[i] - 4 + 'z' - 'a' ) - 'a') % ('z' - 'a') ) + 'a';
}else if( p[i] = 'A' p[i] = 'Z' )
{
p[i] = (((p[i] - 5 + 'Z' - 'A' )- 'A') % ('Z' - 'A')) + 'A';
}
}
}
把取模增加1就好了 改一下:
void EnChar(char* p)
{
for( int i=0; istrlen(p); i++ )
{
if (p[i] = '0' p[i] = '9' )
{
p[i] = (((p[i] + 3) - '0') % ('9'-'0'+1)) + '0';
}else if( p[i] = 'a' p[i] = 'z' )
{
p[i] = (((p[i] + 4) - 'a') % ('z' - 'a'+1) ) + 'a';
}else if( p[i] = 'A' p[i] = 'Z' )
{
p[i] = (((p[i] + 5) - 'A') % ('Z' - 'A'+1)) + 'A';
}
}
}
void DeChar(char* p)
{
for( int i=0; istrlen(p); i++ )
{
if (p[i] = '0' p[i] = '9' )
{
p[i] = (((p[i] - 3 + '9'-'0'+1) - '0') % ('9'-'0'+1)) + '0';
}else if( p[i] = 'a' p[i] = 'z' )
{
p[i] = (((p[i] - 4 + 'z' - 'a'+1 ) - 'a') % ('z' - 'a'+1) ) + 'a';
}else if( p[i] = 'A' p[i] = 'Z' )
{
p[i] = (((p[i] - 5 + 'Z' - 'A' +1)- 'A') % ('Z' - 'A'+1)) + 'A';
}
}
}
可能很长 ,这是在我以前一个程序里摘出来的。
原理:用户输入创建密码,机器读取,并把每一位密码进行加密,这里就是把每一位的 ASCII码加一(也可以有其他的加密方式),然后保存在文件里。解密时从文件中读取保存的乱码,然后把它每一位的ascII码减一 在与你输入的密码比较,正确既可以进入。
#define CODE_SIZE 10
int password()
{
FILE *fp;
char s1[CODE_SIZE], s2[CODE_SIZE], s3[CODE_SIZE], fun;
while (1)
{
fp = fopen("password.txt", "r");
if (fp == NULL)
{
printf("第一次运行,请输入初始密码(最多8位):\n");
scanf("%s", s1);
printf("请再次输入初始密码:\n");
scanf("%s", s2);
if (strcmp(s1, s2) == 0)
{
fp = fopen("password.txt", "w+");
if (fp == NULL)
{
printf("创建文件失败退出\n");
getch();
exit(1);
}
else
{
//对s1加密
for (int i = 0; iCODE_SIZEs1[i] != ' '; i++)
{
s1[i] = s1[i] + i;
}
fputs(s1, fp);
printf("初始密码创建完成.\n");
}
}
else
{
printf("两次输入的密码不一致!\n");
}
fclose(fp);
}
else
{
fgets(s1, CODE_SIZE, fp);
fclose(fp);
printf("输入密码:\n");
scanf("%s", s2);
//对s1解密
for (int i = 0; iCODE_SIZEs1[i] != ' '; i++)
{
s1[i] = s1[i] - i;
}
loop:
if (strcmp(s1, s2) == 0)
{
printf("-----密码正确-----\n");
printf("-----请选择功能-----\n");
printf("-----1:修改密码-----\n");
printf("-----2:进入通讯录-----\n");
scanf("%d", fun);
switch (fun)
{
case 1: printf("请输入新密码\n");
scanf("%s", s1);
printf("请再次输入新密码\n");
scanf("%s", s2);
if (strcmp(s1, s2) == 0)
{
fp = fopen("password.txt", "w+");
if (fp == NULL)
{
printf("文件错误!\n");
}
else
{ //对s1加密
for (int i = 0; iCODE_SIZEs1[i] != ' '; i++)
{
s1[i] = s1[i] + i;
}
fputs(s1, fp);
fclose(fp);
printf("密码修改成功\n");
}
}
else
{
printf("两次输入的密码不一致,修改失败\n");
}
break;
case 2: return 1;
default: printf("无效指令\n");
}
}
else
{
printf("密码错误\n请重新输入\n");
scanf("%s", s2);
goto loop;
}
}
printf("------------------\n\n\n\n");
}
}
一、对称加密算法在电子商务交易过程中存在几个问题:
1、对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较短,且破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),
2、它比DES的加密性好,而且对计算机功能要求也没有那么高。IDEA加密标准由PGP(Pretty
Good Privacy)系统使用。
二、非对称加密算法实现机密信息交换的基本过程是:
1、甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。
2、非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要,但加密和解密花费时间长、速度慢,它不适合于对文件加密而只适用于对少量数据进行加密。
不知道是怎么算的,比如15^3怎么算出来是9mod33的,33是题目中已经给的一因为15^3=3375,而3375mod33正好等于17,mod就是求余呗,3375除以33余数就
switch(c[i]){
for(x1='a';x1'n';x1=x1+1){
case x1 : y1=x1+(25-2*j);break;
}
default :printf("%c",c[i]);
}
这里有问题吧,switch...case语句中间是不能拆开的
产品的开发快则一个月,慢则一年,那么如何杜绝市面上各种山寨也成为了我们必须要关注的问题,加密芯片可以做到这点,在保障开发者权益的同时也保护了消费者权益,KEROS加密芯片作为该领域的领头者,一直在尽力贡献一份力。特点如下:接口:标准I2C协议接口;算法: 标准aes256 / KAS算法;特殊接口:Random Stream Cipher for Interface;工作温度:工业级 -40℃ ~+85℃;频率:400Khz;存储:2K字节EEPROM(可选);电压:1.8V~3.6V;封装:SOT23-6,SOP8,TDFN-6。简单的加密算法题的介绍就聊到这里吧,感谢你花时间阅读本站内容,谢谢。
本文标签:简单的加密算法题