很高兴和大家一起分享数字加密解密系统的设计的知识,希望对各位有所帮助。
为什么要使用数据库加密系统?
可禁止 MSSQL, MYQL,Oracle等数据库文件被非法拷贝下载,非法导出; 实现数据库文件备份加密,远程销毁,实现数据库文件脱离运行环境无法打开等防泄密安全要求。
HL-DDS数据库加密软件分为管理端和控制程序,需要在安装 MSSQL, MYSQL,Oracle数据库的机器上安装控制程序,可通过局域网内安装管理程序对HL-DDS软件进行远程操控,安装后,所有数据库文件将处于加密状态,即使将文件拷贝出去也无法使用。同时,通过 MSSQL, MYSQL,Oracle企业管理器备份出来的数据也是加密的,离开本机环境将无法使用,HL-DDS可禁止 MSSQL, MYSQL,Oracle组件导出数据。
#include stdio.h // 标准输入输出函数
#include stdlib.h // 标准库函数
#include string.h // 字符串处理函数
#include ctype.h // 字符操作函数
#define Max 30000 // 定义常数,容纳最大记录数
// 定义核心数组并对其取地址
char name[100],Wenzhang[Max];
char *p1=name;
char *p2=Wenzhang;
// 函数原型说明,定义6个功能模块函数和一个主函数
// 一般将主函数定义放在程序前部,其他函数定义放在主函数之后,因此要先说明函数原型
// 函数原型说明可帮助读者理解程序的结构和功能
char Menubar(); // 主菜单函数,返回菜单选项字符
void List(); // 显示所有记录文本
void Save(int n); //保存文件
void Jiami(); //文本加密
void Jiemi(); //文本解密
void Tongji(); //统计字数
// 主函数,程序运行入口。进行功能选项判定并引用相应的功能函数
// 在无限循环中引用函数Menubar()显示菜单,并返回菜单选项
void main()
{
int yyk=0;
char ch1;
int yyk1=0;
char ch2;
int count=1;
printf("请输入文章名,输入'#'并按回车结束。\n");
while ((ch1=getchar())!='#')
{
name[yyk1++]=ch1;
}
name[yyk1]='\0';
printf("请输入英文文章(本系统只支持英文格式且不要缩写)输入'#'并按回车结束。\n");
while ((ch2=getchar())!='#')
{ if(yyk30000)
{ printf("文章太长,超出30000字符部分的内容将被忽略!\n");
break;
}
Wenzhang[yyk++]=ch2;
}
Wenzhang[yyk]='\0';
for(;;) // 无限循环,选择0 退出循环
{
switch(Menubar()) // 调用主菜单函数,按返回值选择功能函数
{
// 选择功能1至4,查询并显示记录
case '1': List(); break; // 显示原文
case '2': Tongji() ; break; // 字数统计
case '3': Jiami(); break; // 文件加密
case '4': Jiemi(); break; // 文件解密
case '5': Save(count); break; //文件保存
case '0': exit(0); // 跳出循环,终止程序运行
} // switch语句结束
} // for循环结束
} // main()函数结束
// 主菜单函数,由main()函数引用,返回菜单选项字符供main()的switch语句判定
// 使用printf()函数显示菜单项,用sacnf()函数接收选项字符
// while条件限定选项的合法性,非法字符则重新输入
char Menubar()
{
char c='0';
printf("\n############ 文本加密解密管理软件 ################\n\n");
printf(" 文 1. 显示文件文本原样 \n");
printf(" 本 2. 字数统计 \n");
printf(" 加 3. 文件加密 \n");
printf(" 密 4. 文件解密 \n");
printf(" 解 5. 文件保存 \n");
printf(" 密 0. 退出系统 \n");
printf(" 系 \n");
printf(" 统 \n");
printf("\n#########################################################\n");
printf("\n 请输入选项(0-5):"); // 提示输入选项
do{
scanf("%c",c); // 输入选择项,为1个字符
}while(!(c='0'c='5'));// 选择项不合法则重输
return c; // 返回选择项
}
// 保存数组中的记录到文件中,参数为记录数
// 在对数组中的数据作过修改后都需要引用本函数保存修改结果
void Save(int n)
{
int i;
FILE *fp; // 指向文件的指针
fp=fopen("My Documents1.txt","wt");
getchar(\n);
printf(".........正在保存文件.............\n"); // 输出提示信息
fprintf(fp,"\r\n"); // 将换行符号写入文件
fprintf(fp,"%s",p1);
fprintf(fp,"%s",p2);
fprintf(fp,"\r\n"); // 将换行符号写入文件,使记录分行存放
fclose(fp); // 关闭文件
printf("........文件已经成功保存!..........\n"); // 提示文件保存成功
}
// 显示记录,参数为记录数组
void List()
{
printf("\n\n******************** 原文如下 ************************\n\n");
printf("--------------------------------------------------------------------------\n");
puts(p1);
getchar(\n);
puts(p2);
printf("\n******************* 显 示 结 束 **********************\n");
}
//统计字数
void Tongji()
{
int w,s; //定义两个整型变量
w=s=0; //对W,S赋初值0
for (p2=Wenzhang;*p2!='\0';p2++) //for循环
{ //p2处值指向首地址Wenzhang,当p取值不是终止符时,执行并完后自加1
if (*p2=='.'||*p2=='?'||*p2=='!') //选择语句条件是p2地址所取值是句号或问号或感叹号
++s; //满足以上条件则执行s自加1
if (*p2='A'*p2='Z'||*p2='a'*p2='z') //选择语句条件是p地址所取值是26个字母
{
if (*(p2+1)'A'||*(p2+1)'Z'*(p2+1)'a'||*(p2+1)'z') //复合条件语句
++w; //当条件满足p+1这个地址取值不是26个字母时,执行w自加1
}
}
printf("\n总单词数为%d\n",w); //结束for循环后打印s,w的最后结果
printf("总句数为%d\n",s);
}
//加密
void Jiami()
{
char VI,VIP;
int i=0;
printf("请输入加密密码:");
scanf("%d",VI);
while(Wenzhang[i])
{
if (Wenzhang[i]=32Wenzhang[i]91) Wenzhang[i]+=26;
else if(Wenzhang[i]=91Wenzhang[i]102) Wenzhang[i]+=26;
else if(Wenzhang[i]101Wenzhang[i]127) Wenzhang[i]-=69;
else Wenzhang[i]=Wenzhang[i];
i++;
}
printf("加密后的文章内容如下:\n\n");
puts(Wenzhang);
}
//解密
void Jiemi()
{
char VI,VIP;
int i=0;
printf("请输入密码 :");
scanf("%d",VIP);
if(VIP==VI)
{
while(Wenzhang[i])
{ if (Wenzhang[i]=32Wenzhang[i]=57) Wenzhang[i]+=69;
else if(Wenzhang[i]=58Wenzhang[i]117) Wenzhang[i]-=26;
else if(Wenzhang[i]=117Wenzhang[i]=127) Wenzhang[i]-=26;
else Wenzhang[i]=Wenzhang[i];
i++;
}
printf("\n\n解密后的文章内容如下:\n\n");
puts(Wenzhang);
printf("\n\n");
}
else
printf("密码错误!请重新输入");
}
/*35.英文加密解密程序设计(3人,A类)
(1)选项菜单集成各功能函数模块
(2)输入英文(可以有多行)
(3)统计文章的单词数量和句子数量
(4)文章加密
(5)密文解密*/
只要做成多表加密,而每个表的明密文字母是互相映射就可以了。比如你可以做成三个表的,第一个字母用第一张表,这个表可以设置为a与z互换,b与y互换……第二好字母用第二个表,这个表a与b互换,c与d互换……第三个字母用第三个表……第四个字母再换回来用第一个表……就是这样。加解密表只要设置成互相转化就可以完成对称加密了,而多表加密也实现后面的要求,当然你可以设置更多的表,或者以某种规律自动生成后面的表,不难实现
[我是不是复制粘贴的,我认真写的,你也认真看下就懂了]
我写的这个浅显易懂,看看你就明白了。举得有例子。
RSA算法举例说明
空间里面好像还有算法
知道里面刚才回答了另个朋友的问题帖出来给你看看
题目:用RSA算法加密时,已经公钥是(e=7,n=20),私钥是(e=3,n=20),用公钥对消息M=3加密,得到的密文是_____?
给出详细过程。 谢谢!
答:
你所说的:
n=20
d=7 公钥
e=3 私钥
对M=3 进行加密
M'=M^d%n (M的d次方,然后除以n取余数)
M'=3^7%20=2187%20=7 加密后等於7
对M'=7进行解密
M=M'^e%n=7^3%20=343%20=3 解密后又变成3了
你取的两个素数太小了,所以n太小根本起不了作用。至少要取1024位的数字
随着社会的发展,产品的更新速度也是越来越快,算法是方案的核心,保护开发者和消费者的权益刻不容缓,那么加密芯片在其中就扮演了重要的角色,如何选择加密芯片呢?
1.市面上加密芯片种类繁多,算法多种,加密芯片强度参差不齐,加密性能与算法、秘钥密切相关。常见的加密算法有对称算法,非对称算法,国密算法,大部分都是基于I2C、SPI或1-wire协议进行通信。加密芯片还是需要项目实际需求选择,比如对称加密算法的特点是计算量小、加密速度快、加密效率高等。
2.因为单片机软加密性能较弱且非常容易被复制,所以有了加密芯片的产生,大大增加了破解难度和生产成本。目前加密芯片广泛应用于车载电子、消费电子、美容医疗、工业控制、AI智能等行业。
3.韩国KEROS加密芯片专注加密领域十多年,高安全性、低成本,在加密保护领域受到了众多客户的高度赞扬及认可。KEROS采用先进的内置aes256安全引擎和加密功能,通过真动态数据交互并为系统中敏感信息的存储提供了安全的场所,有了它的保护电路,即使受到攻击,这些信息也可以保持安全。其封装SOP8,SOT23-6,TDFN-6集成I2C与1-wire协议满足不同应用需求。CK02AT、CK22AT、CK02AP、CK22AP支持1.8V-3.6V,256bit位秘钥长度,5bytes SN序列号,支持定制化免烧录,加密行业首选。关于数字加密解密系统的设计的介绍到此就结束了,感谢大家耐心阅读。
本文标签:数字加密解密系统的设计