精华内容
下载资源
问答
  • C语言加密和解密算法

    千次阅读 2018-11-23 22:26:05
    简介:字符串的加密和解密方法一直被广泛应用,最常见的无非是 MD5 散列函数(MD5是信息摘要的一种,可以从任意长度的字符串生成128位的哈希值)。 先来看代码:(注意作者代码中的n全部都是自己可调控变量,自己...

    C语言加密和解密算法

    简介:字符串的加密和解密方法一直被广泛应用,最常见的无非是 MD5 散列函数(MD5是信息摘要的一种,可以从任意长度的字符串生成128位的哈希值)。
    先来看代码:(注意作者代码中的n全部都是自己可调控变量,自己取值即可)具体内容注释解释的很全面(码字不易)*

    #include <stdio.h>
    #include <string.h>
    int main()
    {
        int choose=1;//初始进入值为以便输入
        int i;
        int count=0;//后面用strlen统计字符串长度
        char text[128]={'\0'};//密码的初值,这里随便打关于是补码最大值-128 ~ +127
        char Plaintext[128]={'\0'};//存储加密后密码的数组是因为有
        while(1)
        {
            if(choose==1)
            {
                printf("输入要加密的内容:\n");
                scanf ("%s",&text);//输入字符串
                count=strlen(text);//统计字符串长度以便后面循环用
                for(i=0;i<count;i++)
                {
                    Plaintext[i]=text[i]+i+n;//开始对密码进行加密这里设置的偏移量n自己设置移动量
    			//不过平常这里的n都是通过随机函数来进行赋值的这里不进行多余解释
                }
                Plaintext[i]='\0';//加密新的明文到\0
                printf("加密后的是:%s\n",Plaintext);
            }
            else if(choose==2)//第二个是解密明文
            {
                count=strlen(text);
                for(i=0;i<count;i++)
                {
                    text[i]=Plaintext[i]-i-n;//把原数减回来,得到初始密码
                }
                text[i]='\0';
                printf("解密后:%s\n",text);
            }
            else if(choose==3)//这里是用做退出
            {
                break;
            }
            printf("请输入数字1,2,3功能按键:\n");
    scanf("%d",&choose);//通过输入2 3来进行菜单选择
        }
        return 0;
    }
    
    
    

    最后我们简单来说一下算法思想:使用 while 语句弄个一个无限循环,定义两个字符组,用来存储明文和加密后的字符串,然后通过偏移量来进行加密和解密,每当加密或者解密完之后,为了不让程序一直循环下去我们设置了一个3也就是一个break语句来退出循环变量从而完成程序。

    展开全文
  • C语言字符串加密和解密算法 在本实例中要求设计一个加密和解密算法在对一个指定字符串加密之后利用解密函数能够对密文解密显示明文信息加密方式是将字符串中每个字符加上它在字符串中位置和一个偏移值 5以字符...
  • 源代码,win32控制台,阐述文件加密解密功能,有注释,主要功能有文件的加密解密和修改密码
  • 本文实例为大家分享了C语言实现文件加密解密功能的具体代码,供大家参考,具体内容如下使用命令提示符,实现任何文件的加密和解密功能。代码如下://#define _CRT_SECURE_NO_WARNINGS#include #include #include #...

    本文实例为大家分享了C语言实现文件加密解密功能的具体代码,供大家参考,具体内容如下

    使用命令提示符,实现任何文件的加密和解密功能。

    代码如下:

    //#define _CRT_SECURE_NO_WARNINGS

    #include

    #include

    #include

    #include

    #include

    #pragma warning(disable:4996)

    //加密

    void Encryption(char *p, size_t n)

    {

    for (int i = 0; i < n;++i)

    {

    *p += 7;

    }

    }

    //解密

    void Decrypt(char *p, size_t n)

    {

    for (int i = 0; i < n;++i)

    {

    *p -= 7;

    }

    }

    char *EnOrDe = {0};

    int main(int argc, char *args[])

    {

    clock_t c1 = clock();//系统当前时间,毫秒为单位

    char *FileNameSrc = (char *)calloc(160, sizeof(char));//待操作文件

    char *p2 = (char *)calloc(200, sizeof(char));//操作后文件名

    //从命令行获取文件名和要处理的操作

    FileNameSrc = args[1];//文件名,包含路径

    char *p1 = args[1];

    EnOrDe = args[2];//en表示加密,de表示解密

    /*FileNameSrc = "E:\\iPhone6-new.txt" ;

    char *p1 = FileNameSrc;

    EnOrDe = "de";*/

    /**********处理生成新的文件名***********/

    //char *p2 = { 0 };

    /*FileNameSrc = p1;*/

    //printf("%s\n", FileNameSrc);

    //printf("%s\n", EnOrDe);

    int index = 0;

    while (*p1)

    {

    if (*p1!='.')

    {

    *p2 = *p1;

    p2++;

    p1++;

    index++;

    }

    else if (*p1 == '.')

    {

    *p2 = '_';

    p2++;

    *p2 = 'H';

    p2++;

    *p2 = '.';

    p2++;

    p1++;

    index+=2;

    }

    }

    printf("\n");

    printf("信息摘要:\n");

    printf("--------------------------------------\n");

    printf("原文件:%s\n", FileNameSrc);

    printf("操作:%s (en——加密,de——解密)\n", EnOrDe);

    printf("预计结果文件:%s\n", p2 - index - 1);

    printf("--------------------------------------\n\n");

    printf("请稍后,玩命处理中......\n");

    char *FileNameDst = p2 - index - 1;

    FILE *pr = fopen(FileNameSrc, "rb");

    FILE *pw = fopen(FileNameDst, "wb");

    struct stat st = { 0 };

    size_t fileSize = st.st_size;//以字节为单位

    //char *buf = NULL;

    //if (fileSize<1024*1024)//小于1M

    //{

    // buf = malloc(sizeof(char) * 1024 * 20);//分配20K

    //}

    //else

    //{

    // buf = malloc(sizeof(char)*fileSize / 10);

    //}

    char *buf = calloc(1024 * 1024 * 25, sizeof(int));//分配100M

    /*************定义函数指针***************/

    void(*pFunc)(char *, size_t);

    pFunc = NULL;

    if (strcmp(EnOrDe, "en") == 0)

    {

    pFunc = Encryption;

    }

    else if (strcmp(EnOrDe, "de") == 0)

    {

    pFunc = Decrypt;

    }

    /*************定义函数指针***************/

    while (!feof(pr))

    {

    //memset(buf, 0, sizeof(buf));//calloc自动初始化为0

    size_t res = fread(buf, sizeof(char), sizeof(buf), pr);

    pFunc(buf, res);

    fwrite(buf, sizeof(char), res, pw);

    }

    fclose(pr);

    fclose(pw);

    printf("\n");

    printf("--------------------------------------\n");

    printf("执行成功!\n所在目录:%s\n", FileNameDst);

    clock_t c2 = clock();//系统当前时间,毫秒为单位

    printf("耗时:%u毫秒\n", c2-c1);

    printf("--------------------------------------\n");

    return 0;

    }

    效果:

    0ef249514abc9d5fcbf2a20f1486b683.png

    739daa61fed67368a574cd17554a0d17.png

    365d4468dff7cf774cdac073c4cca9e7.png

    447bb22948aa6c39b1d896a7a7293e12.png

    8b55a6589ac962033f0d8d42b7827559.png

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:C语言使用openSSL库DES模块实现加密功能详解

    C语言使用openSSL库AES模块实现加密功能详解

    基于C语言实现的aes256加密算法示例

    展开全文
  • 可以将所需要的内容(整个文件或者输入的一行字符)加密,也可以将存储的加密文件翻译回来。例如加密时可以将选取内容的每个字符依次反复加上”49632873”中的数字,如果范围超过ASCII码值的032(空格)—122(‘z’),则...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    加解密处理

    1、系统的基本功能

    编写一个对文件(由数字或字母组成)进行加密解密的程序。可以将所需要的内容(整个文件或者输入的一行字符)加密,也可以将存储的加密文件翻译回来。例如加密时可以将选取内容的每个字符依次反复加上”49632873”中的数字,如果范围超过ASCII码值的032(空格)—122(‘z’),则进行模运算(既N%122).解密与加密的顺序相反。

    2、要求及提示2.1 程序执行过程

    (1)从键盘输入要进行加密的一行字符串或者需要加密的文件名。

    (2)显示菜单:

    1.        设置加密方法

    2.        加密

    3.        解密

    4.        显示原始文件和解密文件

    (3)选择菜单,进行相应的操作。加密方法是设置一加密字符串以及对文件的哪些部分进行加密;加密是将原始文件加密并保存到文件中;解密是将加了密的文件还原并保存到文件中,同时应比较与原始文件的一致性;显示是将文件在屏幕上显示出来,供人工校对。

    2.2数据结构

    1 加密方法用结构表示

    struct password      /*加密方法*/

    { char ps[10];       /*加密字符串*/

    long l;           /*加密间隔字节数*/

    long wd;}        /*加密的字节数*/

    2定义原始文件sourse.txt、加密文件result.txt和还原文件recall.txt

    3 程序模块及函数功能:

    (1)        在屏幕上显示文件 void printtxt();

    (2)        加密void encode();

    (3)        解密void decode();

    (4)        文件比较void cmptxt();

    2.2 算法提示

    (1)加密时,每个字符依次反复加上”49632873”中的数字,如果范围超过ASCII码值的032(空格)—122(‘z’),则进行模运算(即N%122).

    例如:加密the

    (t)116+4,(h)104+9,(e)101+6

    变为xqk

    (2) 解密:解密过程与加密过程的顺序正好相反,即从第一个字符开始,每个字符依次反复减去”49632873”中的数字,若执行减法后得到一个负数,则把这个负数加122然后取余,即 (N+122)%122, 其中N为负数。

    例如:把xqk解密

    (x) 120-4   (q)111-9   (k) 107-6

    变为 the

    展开全文
  • (1) 字母数字对应,计算结果取模26最小非负完全剩余系数a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z ,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25 (2) 加密方法即明文...

    要求
    (1) 字母和数字的对应,计算结果取模26的最小非负完全剩余系的数a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z ,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25
    (2) 加密方法即明文和密钥对应相加,密钥取完后又从头开始
    代码

    #include <stdio.h>
    #include<cstring>
    #include <cstdlib>
    
    //加密
    void encrypt()
    { 
      	int a,b,i=0,j=0;
      	char x[100],k[10],y[100];
      	printf("请输入消息:");
      	gets(x);
      	printf("\n");
      	printf("请输入密钥:");
      	gets(k);
      	printf("\n");
      	a=strlen(x);
      	b=strlen(k);
      	strlwr(k);
      
      	if(a>b)
      	{
       		for(i=0;i<a;i++)
          	{
           		y[i]=(x[i]+k[j]-97-97)%26+97;
    	   		printf("%c",y[i]);
           		j++;
           		if(j>=b)
           		{j=0;}
          	}
      	}
    	else
    	{
    		for(i=0;i<a;i++)
          	{
           		y[i]=(x[i]+k[j]-97-97)%26+97;
           		printf("%c",y[i]);
           		j++;
          	}
         } 
    	printf("\n");
    }
    
    //解密
    void decrypt()
    { 
      	int a,b,i=0,j=0;
    	char x[100],k[10],y[100];
      	printf("请输入消息:");
      	gets(x);
      	printf("\n");
      	printf("请输入密钥:");
      	gets(k);
      	printf("\n");
      	a=strlen(x);
      	b=strlen(k);
      	strlwr(k);
    
      	if(a>b)
      	{
       		for(i=0;i<a;i++) 
       		{
    	   		if(x[i]<97)
    	   		{
           			y[i]=(x[i]-(k[j]-32)+26)%26+65;
    	   			printf("%c",y[i]);
    	   			
    	   		}else
    	   		{
    	   			y[i]=(x[i]-k[j]+26)%26+97;
           			printf("%c",y[i]);
    	   		}
           		j++;
           		if(j>=b)
           		{j=0;}
          	}
      	}
    	else
        {
    	 	for(i=0;i<a;i++)
          	{
           		y[i]=(x[i]-k[j]+26)%26+97;
           		printf("%c",y[i]);
           		j++;
          	}
         } 
    	printf("\n");
    }
    
    int main()
    {	
     	int i;
     	list:printf("选择功能:\n1.加密 \n2.解密 \n3.结束\n");
     	scanf("%d",&i);
     	getchar();
     	
    	switch(i)
    	{
     		case 1:encrypt();
     			goto list;
     		case 2:decrypt();
    			 goto list;
     		case 3:exit(1);
     	}	
    }
    
    

    运行结果
    加密
    解密
    验证:
    g u n d a m
    6 20 13 3 0 12
    k a m I a n l a I d a
    10 0 12 8 0 13 11 0 8 3 0
    C1=(6+10)mod26 = 16 -> q
    C2=(20+0)mod26=20 -> u
    C3=(13+12)mod26=25 -> z
    C4=(3+8)mod26=11 -> l
    C5=(0+0)mod26=0 -> a
    C6=(12+13)mod26=25 ->z
    加密完的密文为quzlaz与代码执行后一致。

    展开全文
  • 对称密钥加密算法由于其速度快,一般用于整体数据的加密,而非对称密钥加密算法的安全性能佳,在数字签名领域得到广泛的应用。 TEA算法是由剑桥大学计算机实验室的David WheelerRoger Needham于1994...
  • c语言 字符串加密和解密算法实现

    千次阅读 2019-10-04 22:44:50
    * 加密和解密字符串 * 加密规则:字符串每个字符加上其在字符串中位置再加上偏移量5成为新字符 */ char * encrypt(char []);//加密字符串;*代表返回一个指针类型变量 char * dencrypt(char ...
  • 字符串的加密和解密C语言

    千次阅读 2018-11-13 05:38:32
    字符串的加密和解密C语言
  • 凯撒密码源自于罗马战争时期,用于情报的加密,其实就是根据字母表进位加密,不过在计算机中要考虑ACSII码的存在,当然也可以使用数组的方法去写。
  • C语言加密解密基础

    2018-11-24 22:22:08
    首先将数据倒序,然后将每位数字都加上5,再用除以10余数代替该数字, 最后将第一位最后一位数字交换。 请任意给定一个小于8位整数, 然后,把加密结果在控制台打印出来。 题目要求: A:数据是小于8位...
  • C语言实现字符串的加密和解密

    千次阅读 2020-06-14 14:43:42
    编写C语言程序7个步骤编程机制 C语言基础-第一个C程序 C语言基础-简单程序分析 VS2019编写简单C程序示例 简单示例,VS2019调试C语言程序 C语言基础-基本算法 C语言基础-数据类型 C语言输入输出函数 C语言...
  • DES算法全解 ...DES是对合运算,因而加密和解密共用同一算法,从而使工程实现的工作量减半 DES的密码结构属于Feistel结构 二、DES的加密过程 64位秘钥经子秘钥产生算法产生出16个子秘钥:K1,K2,...,K16K_1
  • 本程序是利用C语言进行文件加密和解密 可加密任何格式文件
  • 在本实例中要求设计一个加密和解密算法。在对一个指定字符串加密之后,利用解密函数能够对密文解密,显示明文信息。 加密方式是将字符串中每个字符加上它在字符串中位置和一个偏移值 5。以字符串“mrsoft”为...
  • 包含DES俩种模式的加密和解密、分别是CBC(加密需要额外指定偏移向量)和ECB模式 #include <stdio.h> #include <string.h> #include <stdlib.h> int subkeys[16][48]; int IP_Table[64] = { //...
  • 亲测可用。
  • rsa加密解密c语言算法Here you will learn about RSA algorithm in C and C++. 在这里,您将了解CC ++中RSA算法。 RSA Algorithm is used to encrypt and decrypt data in modern computer systems and other ...
  • 最近项目中需要用到RSA加密,网上这方面资料很多,研究了一番,发现直接用opensslrsa接口非常方便,可以直接通过别人提供公钥私钥进行加密解密,也可以通过openssl生成密钥对将公钥提供给别人使用。...
  • C语言实验 文件加密解密

    千次阅读 2018-04-26 20:37:07
    简单的加密与解密方法有:异或实现,...本次实验我采用ASCII码与十进制转换,把每个字符强制转化为3位ASCII数字,进行加密和解密。 #include <stdio.h> #include <stdlib.h> int main() { FILE *f1...
  • 下面DES算法包括加密和解密两个功能,主要有生成16个子密钥和DES算法主程序组成。输出信息有16轮子密钥以及每轮中间值以及最后结果。具体代码中都有注释,就看代码吧。关于DES算法流程,感兴趣自行...
  • C语言初学者可以做到的加密和解密

    千次阅读 2017-11-25 11:20:48
    通过这篇文章 ...也可以加深对c语言的理解 1,建立一个程序,把一个加密文档做为输入到特定的程序中,该程序会建立一个文档,在那里输出明文。这难道就是当前加密的始祖。。。。。。。。 例子:
  • 一个简单文件加密和解密程序 main.c #include <stdio.h> #include <stdlib.h> #include "fun.h" int main(int argc ,char *argv[]) { while(1) { int cmd=0; print_help(); printf("请...
  • 使用命令提示符,实现任何文件的加密和解密功能。 代码如下: //#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #pragma warning(disable:4996) //加密 void Encryption(char *...
  • 用户选定一篇英文文章,用其中每个字母所在行数列数组成序列,作为该字母密码。用这个密码对任给一段英文文本进行加密(如密码不唯一,随机选定一个作为密码)。并可对任给一段密码进行解密。 功能要求...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 383
精华内容 153
关键字:

c语言的加密和解密

c语言 订阅