加密之所以安全,绝非因不知道加密解密算法方法,而是加密的密钥是绝对的隐藏,流行的RSA和AES加密算法都是完全公开的,一方取得已加密的数据,就算知道加密算法也好,若没有加密的密钥,也不能打开被加密保护的信息。
加密作为保障数据安全的一种方式,它不是才有的,它产生的历史相当久远,它是起源于要追溯于公元前2000年(几个世纪了),虽然它不是我们所讲的加密技术(甚至不叫加密),但作为一种加密的概念,确实早在几个世纪前就诞生了。
当时埃及人是最先使用特别的象形文字作为信息编码的,随着时间推移,巴比伦、美索不达米亚和希腊文明都开始使用一些方法来保护他们的书面信息。
近期加密技术主要应用于军事领域,如美国独立战争、美国内战和两次世界大战。最广为人知的模顷编码机器是German Enigma机,在第二次世界大战中德国人利用它创建了加密信息。此后,由于Alan Turing和Ultra计划以及其他人的努力,终于对德国人的密码进行了破解。
扩展资料:
相关标准
最早、最著名的保密密钥或对称密钥加密算法DES(Data Encryption Standard)是由IBM公司在70年代发展起来的,并经政府的加密标准筛选后,于1976年11月被美国政府采用,DES随后被美国国家标准局和美国国家标准协会(American National Standard Institute,ANSI)承认。
DES使用56位密钥对64位的数据块进行加密,并对64位的数据块进行16轮编码。与每轮编码时,一个48位的"每轮"密钥值由56位的完整密钥得出来。
DES用软件进行解码需用很长时间,而用硬件解码速度非常快。幸运带码哪的是,当时大多数黑客并没有足够的设备制造出这种硬件设备。
在1977年,人们估计要耗资两蠢码千万美元才能建成一个专门计算机用于DES的解密,而且需要12个小时的破解才能得到结果。当时DES被认为是一种十分强大的加密方法。
这里使用的是按位加密,按ASCII码进行加密的算法自己写个,很容易的。#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
void dofile(char *in_fname,char *pwd,char *out_fname)/*对文件进行加密的具体函数*/
void usage(char *name)
void main(int argc,char *argv[])/*定义main()函数的命令行参数*/
{
char in_fname[30]/*用户输入的要加密颤袭的文件名*/
char out_fname[30]
char pwd[10]/*用来保存裂扮密码*/
if(argc!=4)
{/*容错处理*/
usage(argv[0])
printf("\nIn-fname:\n")
gets(in_fname)/*得到要加密的文件名*/
while(*in_fname==NULL)
{
printf("\nIn-fname:\n")
gets(in_fname)
}
printf("Password 6-8:\n")
gets(pwd)/*得到密码*/
while(*pwd==NULL || strlen(pwd)>8 || strlen(pwd)<6)
{
printf("Password 6-8:\n")
gets(pwd)
}
printf("Out-file:\n")
gets(out_fname)/*得到加密后你要的文件名*/
while(*in_fname==NULL)
{
printf("Out-file:\n")
gets(out_fname)
}
while(!strcmp(in_fname,out_fname))
{
printf("文件名不能和源文件相同\n")
printf("Out-file:\n")
gets(out_fname)
}
dofile(in_fname,pwd,out_fname)
printf("加密成功,解密请再次运行程序\n")
}
else
{/*如果命令行参数正确,便直接肆洞灶运行程序*/
strcpy(in_fname,argv[1])
strcpy(pwd,argv[2])
strcpy(out_fname,argv[3])
while(*pwd==NULL || strlen(pwd)>8 || strlen(pwd)<6)
{
printf("Password faied!\n")
printf("Password 6-8:\n")
gets(pwd)
}
while(!strcmp(in_fname,out_fname))
{
printf("文件名不能和源文件相同\n")
printf("Out-file:\n")
gets(out_fname)
while(*in_fname==NULL)
{
printf("Out-file:\n")
gets(out_fname)
}
}
dofile(in_fname,pwd,out_fname)
printf("加密成功,解密请再次运行程序\n")
}
}
/*加密子函数开始*/
void dofile(char *in_fname,char *pwd,char *out_file)
{
FILE *fp1,*fp2
register char ch
int j=0
int j0=strlen(pwd)
fp1=fopen(in_fname,"rb")
if(fp1==NULL)
{
printf("cannot open in-file.\n")
exit(1)/*如果不能打开要加密的文件,便退出程序*/
}
fp2=fopen(out_file,"wb")
if(fp2==NULL)
{
printf("cannot open or create out-file.\n")
exit(1)/*如果不能建立加密后的文件,便退出*/
}
/*加密算法开始*/
while(j0>=0)
{
ch=fgetc(fp1)
while(!feof(fp1))
{
fputc(ch^pwd[j>=j0?j=0:j++],fp2)/*异或后写入fp2文件*/
ch=fgetc(fp1)
}
j0--
}
fclose(fp1)/*关闭源文件*/
fclose(fp2)/*关闭目标文件*/
}
void usage(char *name)
{
printf("\t=======================File encryption======================\n")
printf("\tusage: %s In-fname password out_fname\n",name)
printf("\tExample: %s file1.txt 12345678 file2.txt\n",name)
}
常见的数据加密流程包括以下步骤:升岁
Key Generation:生成密钥,这是加密和解密的关键要素。
Data Encryption:使用密钥对数据进行加密,生成密文。丛弯
Transmission:在安全的环境中传输加密数据。
Data Decryption:使用相同的密钥对加密数据进行解密,生成明文。
在不同的加密方案中,步骤和细节可能有所不同,但是以上是常见的数据加密流吵郑睁程。常见的加密方案包括对称加密(例如AES),非对称加密(例如RSA)等。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)