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对密码加密和解密函数

// Crypt.cpp: implementation of the CCrypt class. // /////////////////////////////////////////////...
  • wh8_2011
  • wh8_2011
  • 2016年04月25日 16:23
  • 2126

VC++ 解压有密码的.zip文件

据说对.rar文件的解压是没有开源库的,而且好多软件都是收费的,因此这里便不再探讨对.rar文件的解压,下面研究一下.zip文件。 不可否认,zlib是当今应用最广泛的压缩与解压缩.zip文件的免...
  • educast
  • educast
  • 2014年08月21日 13:11
  • 3720

VC++ 解压有密码的.zip文件

据说对.rar文件的解压是没有开源库的,而且好多软件都是收费的,因此这里便不再探讨对.rar文件的解压,下面研究一下.zip文件。   不可否认,zlib是当今应用最广泛的压缩与解压缩.z...
  • ccx_john
  • ccx_john
  • 2013年11月13日 09:26
  • 1086

VC 使用Cryptography 微软自带算法加解密文件

// Encrypting_a_File.cpp : Defines the entry point for the console // application. // #include #i...
  • earbao
  • earbao
  • 2014年12月31日 12:04
  • 1629

proxool配置文件中用户名和密码使用加密后的密文(安全测评)

Proxool是一种Java数据库连接池技术。sourceforge下的一个开源项目,这个项目提供一个健壮、易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。 ...
  • xiaoshuji
  • xiaoshuji
  • 2016年02月14日 17:03
  • 931

微信小程序--实现密码加密

微信小程序开发--实现密码加密具体步骤
  • qq_38125123
  • qq_38125123
  • 2017年07月06日 14:21
  • 1075

Spring中管理数据源,加密和解密账号密码的方法

开始有一篇关于SSH框架上加密t
  • dsiori
  • dsiori
  • 2017年01月05日 14:47
  • 2154

给自己的mongodb设置密码吧

今天含着热泪写下这篇文章,在今年的二月份上线的自己的个人博客,今天一看竟然被别人删除了数据库,我的心中有一种动物飞奔呀。虽然是有文章备份的,还是对我造成了很大的上海,所以痛定思痛写下这篇文章。能被攻击...
  • woshinannan741
  • woshinannan741
  • 2017年05月10日 15:27
  • 616

Linux shadow文件中密码的加密方式

shadow文件中密码的加密方式 1) 查看shadow文件的内容 cat /etc/shadow 可以得到shadow文件的内容,限于篇幅,我们举例说明: root:$1$Bg1H/...
  • casy35
  • casy35
  • 2014年10月22日 19:33
  • 4472

Druid连接池自定义数据库密码加解密的实现

Druid的功能1、替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。2、可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详...
  • u010870518
  • u010870518
  • 2016年04月27日 15:08
  • 15195
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC对密码加密和解密函数
举报原因:
原因补充:

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