zoukankan      html  css  js  c++  java
  • c语言实现对密码(字符串)进行加密,并解密

      1 /**习惯把密码明文存在本地文件中,这个小程序可以把存的密码以密文形式保存**/
      2 #include <stdio.h>
      3 #include <string.h>
      4 #include <stdlib.h>
      5 #include <time.h>
      6 int chartoasc(char c);
      7 int xor(int i);
      8 char asctochar(int a);
      9 int rand_num();
     10 int encrypt(const char *org_pass,char *new_pass);
     11 int decrypt(const char *new_pass,char *org_pass);
     12 
     13 int main(int argc,char *argv[])
     14 {
     15     if(argc!=2)
     16     {
     17         printf("参数输入有误!
    ");
     18         printf("usage:<pass flag >
    flag=1:加密;flag=2:解密
    ");
     19         return -1;
     20     }
     21     int flag = 0;
     22     int len = 0;
     23     int i = 0;
     24     int ret = 0;
     25     char password[20];
     26     char new_pass[50];
     27     char org_pass[50];
     28     int test1 = 0;
     29     int test2 = 0;
     30     char test3 = 0;
     31     char *p = NULL;
     32 
     33     bzero(password,sizeof(password));
     34     bzero(new_pass,sizeof(new_pass));
     35     bzero(org_pass,sizeof(org_pass));
     36 
     37     flag = atoi(argv[1]);
     38     if(flag == 1)
     39     {
     40         printf("请输入需要加密的密码:");
     41         scanf("%s",password);
     42         ret = encrypt(password,&new_pass);
     43         if(ret)
     44         {
     45             printf("密码加密失败!
    ");
     46             return -1;
     47         }
     48         printf("新密码[%s]
    ",new_pass);
     49     }
     50     else if(flag ==2)
     51     {
     52         printf("请输入需要解密的密码:");
     53         scanf("%s",password);
     54         ret = decrypt(password,&org_pass);
     55         if(ret)
     56         {
     57             printf("获取原密码失败!
    ");
     58             return -1;
     59         }
     60         printf("原密码[%s]
    ",org_pass);
     61     }
     62     else
     63     {
     64         printf("加密标志输入如有误!
    ");
     65         return -1;
     66     }
     67 
     68     return 0;
     69 }
     70 
     71 /**将字符转换为ASCII值**/
     72 int chartoasc(char c)
     73 {
     74     int i= 0;
     75     i = c;
     76     return i;
     77 }
     78 
     79 /**将ASCII进行异或运算,产生新的ASCII值**/
     80 int xor(int i)
     81 {
     82     int m = 27;
     83     int result = 0;
     84     if(59==i || 100==i)
     85     {
     86         return i;
     87     }
     88     result = i^m;
     89     return result;
     90 }
     91 
     92 /**将ASCII值转换为字符**/
     93 char asctochar(int a)
     94 {
     95     char c;
     96     c = a;
     97     return c;
     98 }
     99 
    100 /**输入原密码产生新的密码**/
    101 int encrypt(const char *org_pass,char *new_pass)
    102 {
    103     char org_password[50];
    104     char new_password[50];
    105     int len = 0;
    106     int i = 0;
    107     int asc = 0 ;
    108     char ch = 0;
    109     int x = 0;
    110 
    111     bzero(org_password,sizeof(org_password));
    112     bzero(new_password,sizeof(new_password));
    113     strcpy(org_password, org_pass);
    114     len = strlen(org_password);
    115     for(i=0 ; i<len ; i++)
    116     {
    117         ch = org_password[i];
    118         asc = chartoasc(ch);
    119         x = xor(asc);
    120         new_password[i] = asctochar(x);
    121     }
    122     strcpy(new_pass,new_password);
    123 
    124     return 0;
    125 }
    126 
    127 /**输入加密后的密码返回原密码**/
    128 int decrypt(const char *new_pass,char *org_pass)
    129 {
    130     char new_password[50];
    131     char org_password[50];
    132     char ch;
    133     int a = -1;
    134     int len =0;
    135     int i=0;
    136     int x = -1;
    137 
    138     bzero(new_password,sizeof(new_password));
    139     bzero(org_password,sizeof(org_password));
    140 
    141     strcpy(new_password,new_pass);
    142     len = strlen(new_password);
    143     for(i=0;i<len;i++)
    144     {
    145         ch = new_password[i];
    146         a = chartoasc(ch);
    147         x = xor(a);
    148         org_password[i]=asctochar(x);
    149     }
    150     strcpy(org_pass,org_password);
    151 
    152     return 0;
    153 }

    后续考虑实现界面程序的改进。。。

  • 相关阅读:
    bzoj 2152: 聪聪可可
    bzoj 2143: 飞飞侠
    bzoj 2132: 圈地计划
    bzoj 2127: happiness
    bzoj 2124: 等差子序列
    bzoj 2120: 数颜色
    对MySQL数据类型的认识
    MySQL详解--锁,事务(转)
    mysql 5.7快速部署
    elasticsearch报错[WARN ][bootstrap ] Unable to lock JVM Memory: error=12,reason=Cannot allocate memory,解决
  • 原文地址:https://www.cnblogs.com/chenanan/p/7744008.html
Copyright © 2011-2022 走看看