简单的加密Crypt 类
来源:互联网 发布:淘宝申请假冒品牌退货 编辑:程序博客网 时间:2024/04/29 19:35
(Crypt.h)
#ifndef _CRYPT_H_#define _CRYPT_H_#include <Windows.h>class CCrypt{public :static BOOL Encrypt (BYTE *source, BYTE *destination, DWORD length) ;static BOOL Decrypt (BYTE *source, BYTE *destination, DWORD length) ;};#endif //~_CRYPT_H_
(Crypt.cpp)
#include "Crypt.h"const INT C1 = 52845;const INT C2 = 22719;const INT KEY = 72957;//进行加密的函数BOOL CCrypt::Encrypt (BYTE *source , BYTE *destination, DWORD length){DWORD i;INT Key = KEY;if(!source || !destination || length <= 0)return FALSE;for (i = 0; i < length; i++) //加密为 BYTE 单位{destination[i] = source [i]^Key >> 8;//按照 Key 值进行 1BYTE 的平方,推 8bit Key = (destination[i] + Key) * C1 + C2;//在下一 BYTE 中,通过 C1、C2 修改所要使用的 KEY }return TRUE;}//进行解密的函数BOOL CCrypt::Decrypt (BYTE *source , BYTE *destination, DWORD length){DWORD i;BYTE PreviousBlock;INT Key = KEY;if(!source || !destination || length <= 0)return FALSE;for (i = 0; i <length; i++) //加密为 BYTE 单位{PreviousBlock = source[i];destination[i] = source[i]^Key >> 8;Key = (PreviousBlock + Key) * C1 + C2;//保存之前的块(Block) ,然后查看解密所使用的 KEY }return TRUE;}
测试代码
#include <stdio.h>#include <tchar.h>#include "Crypt.h"int _tmain(int argc, _TCHAR* argv[]){char a1[10] = "abcdefhig";char a2[10] = {0};char a3[10] = {0};printf("a1=%s\n", a1);CCrypt::Encrypt((BYTE *)a1, (BYTE *)a2, 10);printf("a2=%s\n", a2);CCrypt::Decrypt((BYTE *)a2, (BYTE *)a3, 10);printf("a3=%s\n", a3);return 0;}
下面简单了解一下源代码。
const INT C1 = 52845;const INT C2 = 22719;const INT KEY = 72957;上面定义的 3 个变量都是为了进行 bit 运算而成为 KEY 的变量。
从上面的 Encrypt 函数可以了解到通过一般 bit 运算进行加密的方法,它的核心
逻辑就是将 KEY 修改为 1BYTE 单位的同时进行加密。 假定所有数据转换为每 BYTE
一样的 KEY, 进行 bit 运算, 这时只需要知道该 KEY 就可以很容易地解密了。 因此,
添加修改 KEY 的公式, 就是要防止非法获取 KEY 而解密。 下面通过 Decrypt 函数了
解一下这部分的解密。
ZZ: 网游服务器编程第3章
- 简单的加密Crypt 类
- 关于Linux下的crypt加密
- 关于Linux下的crypt加密
- crypt密码加密函数的基本用法
- crypt函数加密
- 加密函数crypt
- dm-crypt加密
- 如何在Linux下生成crypt加密好的密码
- php 的加密函数 md5,crypt,base64_encode 等使用介绍
- python的加密模块(md5,sha,crypt)学习
- Laravel基础-Crypt的加密解密和配置原生SESSION
- php实现用户注册密码的crypt加密
- PHP数据加密技术之一---CRYPT()加密
- python----MD5加密,crypt加密加salt
- crypt的使用
- python的crypt模块
- 利用dm-crypt内核模块对磁盘数据加密的尝试
- Python---项目3-破解使用crypt方法加密(已加salt参数)的登录密码
- Oracle错误一览表
- 16-5 填空学指针
- Sobel算法实现(C语言)
- oracle表解锁(未锁死)
- VC++ 的MFC 和ATL 及COM 是什么?
- 简单的加密Crypt 类
- 量化管理在程序员身上永无可能
- (html转换)StringEscapeUtils类的转义与反转义方法
- nagios配置文件详解
- js+css页签(css单独写)
- Android行业解决方案(kk30 V2主板)
- 11g中SYSTEM用户的Procedure中不能访问DBA_视图
- eclipse正则表达式批量查找替换 (非常实用)
- 运维监控之Nagios实战(三)&Nagios配置文件