c语言实现对密码(字符串)进行加密,并解密
2017-10-31 11:38
459 查看
/**习惯把密码明文存在本地文件中,这个小程序可以把存的密码以密文形式保存**/ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> int chartoasc(char c); int xor(int i); char asctochar(int a); int rand_num(); int encrypt(const char *org_pass,char *new_pass); int decrypt(const char *new_pass,char *org_pass); int main(int argc,char *argv[]) { if(argc!=2) { printf("参数输入有误!\n"); printf("usage:<pass flag >\nflag=1:加密;flag=2:解密\n"); return -1; } int flag = 0; int len = 0; int i = 0; int ret = 0; char password[20]; char new_pass[50]; char org_pass[50]; int test1 = 0; int test2 = 0; char test3 = 0; char *p = NULL; bzero(password,sizeof(password)); bzero(new_pass,sizeof(new_pass)); bzero(org_pass,sizeof(org_pass)); flag = atoi(argv[1]); if(flag == 1) { printf("请输入需要加密的密码:"); scanf("%s",password); ret = encrypt(password,&new_pass); if(ret) { printf("密码加密失败!\n"); return -1; } printf("新密码[%s]\n",new_pass); } else if(flag ==2) { printf("请输入需要解密的密码:"); scanf("%s",password); ret = decrypt(password,&org_pass); if(ret) { printf("获取原密码失败!\n"); return -1; } printf("原密码[%s]\n",org_pass); } else { printf("加密标志输入如有误!\n"); return -1; } return 0; } /**将字符转换为ASCII值**/ int chartoasc(char c) { int i= 0; i = c; return i; } /**将ASCII进行异或运算,产生新的ASCII值**/ int xor(int i) { int m = 27; int result = 0; if(59==i || 100==i) { return i; } result = i^m; return result; } /**将ASCII值转换为字符**/ char asctochar(int a) { char c; c = a; return c; } /**输入原密码产生新的密码**/ int encrypt(const char *org_pass,char *new_pass) { char org_password[50]; char new_password[50]; int len = 0; int i = 0; int asc = 0 ; char ch = 0; int x = 0; bzero(org_password,sizeof(org_password)); bzero(new_password,sizeof(new_password)); strcpy(org_password, org_pass); len = strlen(org_password); for(i=0 ; i<len ; i++) { ch = org_password[i]; asc = chartoasc(ch); x = xor(asc); new_password[i] = asctochar(x); } strcpy(new_pass,new_password); return 0; } /**输入加密后的密码返回原密码**/ int decrypt(const char *new_pass,char *org_pass) { char new_password[50]; char org_password[50]; char ch; int a = -1; int len =0; int i=0; int x = -1; bzero(new_password,sizeof(new_password)); bzero(org_password,sizeof(org_password)); strcpy(new_password,new_pass); len = strlen(new_password); for(i=0;i<len;i++) { ch = new_password[i]; a = chartoasc(ch); x = xor(a); org_password[i]=asctochar(x); } strcpy(org_pass,org_password); return 0; }
相关文章推荐
- 用C语言实现移位密码加密与解密
- 用c语言对一个字符串进行加密和解密
- 文件中用tobase() && frombase64() 对密码进行加密和解密遇到的问题
- 用java编写一个简单的字符串加密解密程序,将字符串分成若干行,实现字符串以一列一列读取,并还原之前输入的字符串。这里实现4行输出。
- Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作
- 简单的加密与解密的实现---仿射密码
- php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
- 读取项目中properties文件中的账号密码进行加密解密
- c++实现aes加密算法,对字符串进行加密
- 【Java】通过DES加密和解密工具,对字符串进行加密和解密操作
- 对字符串进行SHA1和DES(加密,解密),加密和解密的类
- Java中对字符串进行加密和解密
- 利用TEA算法实现加密密码文件生成与解密
- json对象转为字符串,当做参数传递时加密解密的实现方法
- Python + PHP + RSA 实现加密(解决Python-RSA无法解密一般字符串的问题)
- 【叶子函数分享五十六】对字符串进行加密解密
- 如何使用Java对密码进行加密 Java Sah加密方式帮你实现加密
- 凯撒(Caesar)密码加密解密c语言
- C语言实现任何文件的加密解密
- Springboot实现密码的加密解密