zoukankan      html  css  js  c++  java
  • linux c最简单的加密程序

    最初的密码程序是在Hirst First c里面看到的,大概内容如下:
    对待加密的字符串的每一个字符和某个数值进行一次按位异或得到密文,再进行一次按位异或得到明文。

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

    这个时候再把2^1的结果和1进行按位异或
    01
    00
    10

    原文的加密程序如下:

    #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
    ", s);
        //再运行一次是解密
        encrypt(s);
        printf("解密:%s
    ", s);
        
        return 0;
    }
    encrypt1.c

    既然可以和某个数值进行按位异或进行加密,那么是否可以和某个字符串进行按位异或呢,答案是可以。
    原理如下:待加密的密文的每一个字符和一个密匙(任意字符串) 的每一个字符分别进行一次按位异或进行加密解密即可。
    最终按密匙加密的程序如下:

    #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
    ", s);
        //再运行:进行解密 
        encrypt(s, key);
        printf("解密:%s
    ", s);
        
        return 0;
    } 
    encrypt2.c

    怎么样是不是粉简单,感觉在你的项目中引入这个程序吧。 

  • 相关阅读:
    相对路径与绝对路径的区别
    c语言 蛇形填空
    Java最大公约数 最小公倍数
    c语言 韩信点兵
    c语言倒三角形
    Java 分解质因数
    Java 求水仙花数
    Java 求素数
    Java基于OpenCV实现走迷宫(图片+路线展示)
    Java之函数式接口@FunctionalInterface详解(附源码)
  • 原文地址:https://www.cnblogs.com/qizexi/p/4677165.html
Copyright © 2011-2022 走看看