分享

linux c最简单的加密程序

 mrjbydd 2015-09-25

最初的密码程序是在Hirst First c里面看到的,大概内容如下:
对待加密的字符串的每一个字符和某个数值进行一次按位异或得到密文,再进行一次按位异或得到明文。
原文主要代码片段:
//加密解密程序 
void encrypt(char *message)
{
  while (*message) {
    //对message的每一个字符和31进行按位异或
    *message = *message ^ 31;
    message++;
  }
}

补充知识:按位异或的结果是“同位得1,异位得0”。
比如数值2和数值1进行按位异或的情况如下:
2对应的二进制表示:10
1对应的二进制表示:01
2^1的结果最终表示:00

这个时候再把2^1的结果和1进行按位异或
01
00
10
既然可以和某个数值进行按位异或进行加密,那么是否可以和某个字符串进行按位异或呢,答案是可以。
原理如下:待加密的密文的每一个字符和一个密匙(任意字符串) 的每一个字符分别进行一次按位异或进行加密解密即可。

encrypt.c是原文程序;encrypt2.c是我改编的程序,可以在你的项目中使用哦^^
标签: <无>

代码片段(2)[全屏查看所有代码]

1. [文件] encrypt.c ~ 375B     下载(3)     

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
#include<stdio.h>
 
//加密解密程序
void encrypt(char *message)
{
    while (*message) {
        //对message的每一个字符和31进行按位异或
        *message = *message ^ 31;
        message++;
    }
}
 
int main()
{
    char s[] = "Hello qizexi";
     
    //运行一次:进行加密
    encrypt(s);
    printf("加密:%s\n", s);
    //再运行一次是解密
    encrypt(s);
    printf("解密:%s\n", s);
     
    return 0;
}

2. [文件] encrypt2.c ~ 577B     下载(1)     

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
26
27
28
29
30
31
32
33
34
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
 
//加密解密程序
void encrypt(char *message, const char *key)
{
    int i;
    int len = strlen(key);
    while (*message) {
        //对message的每一个字符和31进行按位异或
        for (i = 0; i < len; i++) {
            *message = *message ^ (int)key[i];
        }
        message++;
    }
}
 
int main()
{
    //密文
    char s[] = "Hello qizexi";
    //密匙
    char *key = "qizexi@163.com";
     
    //运行一次:进行加密
    encrypt(s, key);
    printf("加密:%s\n", s);
    //再运行:进行解密
    encrypt(s, key);
    printf("解密:%s\n", s);
     
    return 0;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多