【加密解密】对字符串的加密解密
来源:互联网 发布:进销存软件免费版app 编辑:程序博客网 时间:2024/05/01 05:16
</pre><pre code_snippet_id="1666199" snippet_file_name="blog_20160429_2_7838133" name="code" class="cpp"><span style="font-size:24px;">字符串 加密解密的入门练习,</span>
#include<stdio.h>#include<stdlib.h>//按照密码加密//文件加密//字符串加密char *stringEncrypt(char *password, char *string);char *stringDecode(char *password, char *string);#include "passw.h"//异或的加密解密函数是一样的//字符串加密char *stringEncrypt(char *password, char *string){int passLength = strlen(password);//获取加密长度int stringLength = strlen(string);//获取字符串长度if (stringLength%passLength == 0)//字符串长度是密码长度的整数倍{int times = stringLength/passLength;for (int i = 0; i < times; i++){for (int j = 0; j < passLength; j++){string[i*passLength+j] ^= password[j];//这里的下标计算画图很容易理解}}}else{int times = stringLength / passLength;for (int i = 0; i < times; i++){for (int j = 0; j < passLength; j++){string[i*passLength + j] ^= password[j];}}int lastLength = stringLength%passLength;//不能整除的,也就是余数长度for (int i = 0; i < lastLength; i++){string[passLength*(stringLength / passLength) + i] ^= password[i];//这里的解密要从前边已经整除完成的后一个位置开始,//假如说stringLength = 10,passLength = 4;那么除不尽的加密就从下标8开始,//(10 / 4)*4 = 8.}}return string;}//字符串解密char *stringDecode(char *password, char *string){int passLength = strlen(password);//获取加密长度int stringLength = strlen(string);//获取字符串长度if (stringLength % passLength == 0)//字符串长度是密码长度的整数倍{int times = stringLength/passLength;for (int i = 0; i < times; i++){for (int j = 0; j < passLength; j++){string[i*passLength + j] ^= password[j];}}}else{int times = stringLength / passLength;for (int i = 0; i < times; i++){for (int j = 0; j < passLength; j++){string[i*passLength + j] ^= password[j];}}int lastLength = stringLength%passLength;//不能整除的,也就是余数长度for (int i = 0; i < lastLength; i++){string[passLength*(stringLength / passLength) + i] ^= password[i];//这里的解密要从前边已经整除完成的后一个位置开始,//假如说stringLength = 10,passLength = 4;那么除不尽的加密就从下标8开始,//(10 / 4)*4 = 8.}}return string;}//测试代码#include<stdio.h>#include<stdlib.h>#include "passw.h"void main(){char str[20] = "abcdefghijk";char *password = "123";printf("%s\n", stringEncrypt(password, str));printf("%s\n", stringDecode(password, str));system("pause");}
0 0
- 【加密解密】对字符串的加密解密
- 对字符串的加密解密
- 字符串的加密解密
- java 对字符串的加密解密
- Base64对字符串的加密解密
- C#对字符串加密解密
- c# 对字符串加密解密
- js对字符串加密,解密
- 如何对字符串加密解密
- 对文本文件的加密解密
- 加密解密字符串的类
- 解密XenoCode加密的字符串
- 解密XenoCode加密的字符串
- 字符串的加密和解密
- 字符串的加密与解密
- 字符串的加密与解密
- 字符串的加密与解密
- 字符串的加密和解密
- iOS开发多线程篇—线程间的通信
- IAR WorkB For STM8 1.42.2和谐文件,无私分享
- 10个惊艳的Swift单行代码
- 框架节构设计(高内聚低耦合)
- nginx proxy的使用
- 【加密解密】对字符串的加密解密
- Listen的backlog参数现象解析
- 在kendogrid中控制数据格式以及实现求和
- 在用到fastjson时遇到的困惑,一些变量名称不规范导致转换后的json字符串丢失这些变量
- 水声成像之基本概念
- android事件分发之ViewGroup篇
- Rxjava基础自己总结的有不足欢迎探讨
- 类的重写
- 四种常见 Git 工作流比较