VC对密码加密和解密函数

原创 2007年09月20日 16:12:00

// Crypt.cpp: implementation of the CCrypt class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.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;
}

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

VC调用JavaScript函数--处理QQ网页登录密码加密(空间、农场、WEB QQ等)

相信很多朋友都对QQ伴侣等农场外挂十分好奇吧!其实我也是,然而不幸的是很多像我一样的兄弟在模拟农场登录时,就被JS函数加密的密码字符串给挡在门外,于是百度来google去,始终没有一个完整的代码或例子...

Enigma机密码加密解密的实现

题目描述 二战时期,德军使用了一套名为Enigma的密码系统,是一种基于字符映射的密码系统。它的工作原理如下: 使用者从键盘按下一个字母后,字母会先经过三个可以转动的轮盘,称为转子,每个转子...
  • kyoma
  • kyoma
  • 2016-07-08 08:41
  • 2009

Openfire3.6.4用户密码的保存及加密、解密

1、用户密码保存在表:ofUser中,表的字段信息如下图所示: 字段信息: 字段名称 含义 username 登录名 plainPassword 原始密码 encryptedP...

Java密码加密与解密

Java密码加密与解密: java中对代码进行加密与解密,其中用MD5方式的是不可逆的。

个人写的凯撒密码,加密解密

/* 凯撒密码加密 And 解密 * 功能不算完善,只能正方向加密和反方向解密 * 也可以用加密,解密互逆的方式来进行明文反方向加密。 */ //#include //之前使用getchar()...

python应用_恺撒密码加密与解密

1.它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以恺...

js简单加密解密演示(可以自定义密码因子)

字符串加密   function encrypt(str, pwd) {   if(pwd == null || pwd.length     alert("Please ent...

密码学之仿射加密解密算法

仿射变换的加密解密分别是: c = Ea,b(m)  ≡ a, + b(mod 26) m = Da,b(c) ≡ a^-1(c - b)(mod 26) 其中,a,b是密钥,为满足0≤a,b≤...

用c++写的PlayFair密码的加密与解密算法

最近学习了密码学的PlayFair密码,于是我就用了C++语言将其写了出来,有些地方肯定用C语言里的数组只是更方便些,但是我为了巩固自己的C++知识,有些地方故意用了C++里面的东西,可能比较复杂!!...

一分钟教你解密Druid配置加密后的密码

Druid是阿里巴巴开源平台上的一个数据库连接池。网上很多资料都是关于Druid数据源的配置与使用,却一直找不到一篇文章教人解密。本文教你如何解密Druid配置文件中加密后的密码。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)