`

基于c语言加密解密算法

    博客分类:
  • C++
阅读更多
这里使用的是按位加密,按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);
}
分享到:
评论

相关推荐

    C语言实现加密解密算法

    本文将深入探讨如何使用C语言实现加密解密算法,并基于提供的文件信息进行讲解。 首先,C语言是一种底层编程语言,它允许直接操作内存,因此非常适合实现复杂的数学运算,如加密算法。常见的加密算法有对称加密(如...

    RSA 加密解密算法C语言 (含linux)

    总的来说,RSA加密解密算法在C语言中实现涉及到大整数运算、公钥私钥生成、加密解密过程等多个环节,结合适当的库可以构建出强大的安全工具。在Linux环境下,可以利用丰富的开源库来简化开发工作。通过深入理解这些...

    用C语言实现的AES加密解密算法

    在本项目中,"用C语言实现的AES加密解密算法"是针对AES算法的一种C语言实现,这允许开发者在不依赖特定库的情况下,在C环境中进行数据的加密和解密操作。 首先,我们需要理解AES的工作原理。AES的核心是基于替换和...

    C语言实现DES加密解密算法

    DES加密解密算法的C语言实现 DES(Data Encryption Standard)是一种对称密钥 BLOCK 加密算法,使用 56 位密钥对 64 位数据块进行加密。下面是 DES 加密解密算法的 C 语言实现的知识点总结。 字节与二进制转换 在...

    DES加密解密算法 C语言源代码

    这篇C语言源代码实现了DES加密解密算法,特别适合于资源有限的环境,如STM32或51单片机。STM32系列是基于ARM Cortex-M内核的微控制器,而51单片机则是早期广泛应用的8位微处理器。在这些平台上,由于内存(RAM)资源...

    Rabin公钥加密解密算法(c语言实现)

    Rabin公钥加密解密算法是一种基于数学难题的非对称加密技术,它在信息安全领域具有重要的应用价值。由Michael O. Rabin于1979年提出,该算法是基于平方剩余问题,即判断一个整数是否为另一个整数平方的模运算结果。...

    rsa加密解密算法C语言代码

    RSA加密解密算法是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,是目前应用最广泛的公钥加密技术之一。该算法基于大数因子分解的困难性,即在两个大素数已知的情况下容易计算它们的...

    C语言实现DES算法DES加密算法实验报告.doc

    C语言实现DES算法DES加密算法实验报告.doc

    椭圆曲线(ECC)加密解密算法的c语言实现

    椭圆曲线加密解密算法(Elliptic Curve Cryptography,简称ECC)是一种基于数学难题的公钥加密技术,相比传统的RSA等加密方法,它在安全性相当的情况下具有更短的密钥长度,从而降低了计算资源的需求。在C++中实现...

    DES加密解密算法(C语言实现)

    C语言实现的DES算法可以提供一个底层的、高效的加密解密解决方案。 在C语言实现DES算法时,首先要理解DES的基本工作原理。DES使用64位的块大小进行操作,但其中包含8位的奇偶校验位,实际用于加密的有效数据只有56...

    用c语言实现的加密解密

    本项目“用C语言实现的加密解密”是一个示例,它展示了如何利用C语言编写加密和解密功能,这对于理解加密原理和学习C语言编程技巧具有一定的价值。 加密是一种保护信息安全的技术,它通过特定的算法将明文数据转化...

    C语言常用加密算法.rar

    1. **DES(Data Encryption Standard)数据加密标准**:DES是一种对称加密算法,基于64位的数据块和56位的密钥进行操作。尽管DES现在被认为安全性较低,但由于其简单快速,仍常用于教学和理解加密原理。 2. **AES...

    C++实现密码学 RSA加密解密算法

    RSA加密解密算法是密码学中一种常用的加密算法,以 Ron Rivest、Adi Shamir 和 Leonard Adleman 三人命名。该算法基于大数分解问题的困难性,使用公钥加密和私钥解密的方式来保护数据的安全。 该算法的基本原理是:...

    C语言文件加密解密系统

    该系统是一个基于C语言编写的文件加密解密工具,能够在Windows 32位控制台环境下运行。它不仅提供了基本的文件加密和解密功能,还允许用户修改加密使用的密码,增加了系统的灵活性和安全性。 #### 核心功能 1. **...

    c语言实现DH算法加密

    c语言编写的DH算法,借鉴学习 A系统构建密钥:构建一对公私密钥Private Key1和Public Key1; A系统向B系统公布自己的公钥(Public Key1); B系统使用A公布的公钥(Public Key1)建立一对密钥:Private Key2和...

    加密解密_C语言_加密解密_

    C语言作为基础的编程语言,虽然没有内置的加密库,但可以通过自定义算法或调用第三方库来实现加密解密功能。 C语言实现加密解密主要涉及以下几个知识点: 1. **基础算法**:常见的加密算法有 Caesar Cipher(凯撒...

    密码学课程设计:希尔加密解密算法的实现

    在实现希尔加密解密算法的过程中,程序首先需要读取用户输入的明文,并将其转化为数字矩阵。字母到数字的映射是这一过程的基础,例如“A”对应0,“B”对应1,等等。之后,程序将按照分组长度(常见为2或3)将明文...

    AES.rar_AES 加密_AES 解密_C语言AES_C语言加密算法_加密解密实现

    在C语言中实现AES加密解密算法,可以提供一个轻量级、高效的解决方案,适合资源有限的环境。 AES算法的工作模式主要有四种:ECB(Electronic Codebook)、CBC(Cipher Block Chaining)、CFB(Cipher Feedback)和...

    des加密解密算法 c语言实现

    编译和运行C语言实现的DES加密解密算法,可以验证算法的正确性。在实际应用中,DES算法尽管已经被更强大的算法如AES所替代,但它在加密历史中占有重要的地位,且由于其算法原理的透明性,使得DES成为学习和教学加密...

    C语言文件加密解密算法步骤基础.pdf

    C语言文件加密解密算法步骤基础 本文档介绍了使用C语言实现文件加密和解密的基础步骤。该算法可以实现文件的加密和解密,包括移位加密、伪随机数加密、命令加密等。 主要算法设计 该算法的主要设计是使用ASCII...

Global site tag (gtag.js) - Google Analytics