Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
Crypt.cpp
Upload User: bjvcxy
Upload Date: 2021-05-06
Package Size: 2054k
Code Size: 2k
Category:
Compress-Decompress algrithms
Development Platform:
Visual C++
- // Crypt.cpp: implementation of the CCrypt class.
- //
- //////////////////////////////////////////////////////////////////////
- #include "stdafx.h"
- #include "Attendance.h"
- #include "Crypt.h"
- #ifdef _DEBUG
- #undef THIS_FILE
- static char THIS_FILE[]=__FILE__;
- #define new DEBUG_NEW
- #endif
- // 常量
- #define C1 52845
- #define C2 22719
- //////////////////////////////////////////////////////////////////////
- // Construction/Destruction
- //////////////////////////////////////////////////////////////////////
- CCrypt::CCrypt()
- {
- }
- CCrypt::~CCrypt()
- {
- }
- CString CCrypt::Encrypt(CString S, WORD Key) // 加密函数
- {
- CString Result,str;
- int i,j;
- Result=S; // 初始化结果字符串
- for(i=0; i<S.GetLength(); i++) // 依次对字符串中各字符进行操作
- {
- Result.SetAt(i, S.GetAt(i)^(Key>>8)); // 将密钥移位后与字符异或
- Key = ((BYTE)Result.GetAt(i)+Key)*C1+C2; // 产生下一个密钥
- }
- S=Result; // 保存结果
- Result.Empty(); // 清除结果
- for(i=0; i<S.GetLength(); i++) // 对加密结果进行转换
- {
- j=(BYTE)S.GetAt(i); // 提取字符
- // 将字符转换为两个字母保存
- str="12"; // 设置str长度为2
- str.SetAt(0, 65+j/26);
- str.SetAt(1, 65+j%26);
- Result += str;
- }
- return Result;
- }
- CString CCrypt::Decrypt(CString S, WORD Key) // 解密函数
- {
- CString Result,str;
- int i,j;
- Result.Empty(); // 清楚结果
- for(i=0; i < S.GetLength()/2; i++) // 将字符串两个字母一组进行处理
- {
- j = ((BYTE)S.GetAt(2*i)-65)*26;
- j += (BYTE)S.GetAt(2*i+1)-65;
- str="1"; // 设置str长度为1
- str.SetAt(0, j);
- Result+=str; // 追加字符,还原字符串
- }
- S=Result; // 保存中间结果
- for(i=0; i<S.GetLength(); i++) // 依次对字符串中各字符进行操作
- {
- Result.SetAt(i, (BYTE)S.GetAt(i)^(Key>>8)); // 将密钥移位后与字符异或
- Key = ((BYTE)S.GetAt(i)+Key)*C1+C2; // 产生下一个密钥
- }
- return Result;
- }