C++ 简单字符串加解密(转载)
#include <iostream.h>
#include <windows.h>
#include <tchar.h> void EncodeString(LPCTSTR lpszText, LPTSTR *lpszReturn, LPCTSTR lpszKey)
{
int nTextLen = ;
char *cPos = NULL;
char *pDest = NULL;
if(!lpszReturn) // 加密
{
nTextLen = ::_tcslen(lpszText);
pDest = (LPTSTR)lpszText;
}
else // 解密
{
// 查找自定的中止标记
cPos = (LPTSTR)lpszText;
while(true) // 从这里可以看到,除非搜索到我们自定的中止标记,否则会一直搜索下去
{
if(*cPos == '=')
if(cPos[] == '=')
if(cPos[] == '\0')
break;
cPos++;
}
if(!cPos) // 没有找到结束标记,也不是加密
return;
nTextLen = cPos - lpszText;
pDest = new char[nTextLen + ]; // ==\0
} int nKeyLen = ::_tcslen(lpszKey);
int i = ;
int k = ;
for(; i < nTextLen; i++)
{
pDest[i] = lpszText[i] ^ lpszKey[k];
k++;
if(k >= nKeyLen)
k = ;
} if(!cPos)
memcpy(pDest + nTextLen, _T("==\0"), * sizeof(TCHAR));
else
{
memset(pDest + nTextLen, _T('\0'), sizeof(TCHAR));
*lpszReturn = pDest;
}
} int main(int argc, char* argv[])
{
char strText[] = "Hello world! I'm zimmerk. I'm a boy. What's your name?";
char *lpszDest = NULL;
cout<<strText<<endl;
cout<<"========================================"<<endl;
EncodeString(strText , NULL, "Zimmerk"); // 加密
cout<<strText<<endl;
cout<<"========================================"<<endl;
EncodeString(strText, &lpszDest, "Zimmerk"); // 解密
if(*lpszDest)
{
cout<<lpszDest<<endl;
delete [] lpszDest;
}
else
cout<<_T("(NULL)")<<endl;
return ;
}
C++ 简单字符串加解密(转载)的更多相关文章
- android中使用jni对字符串加解密实现分析
android中使用jni对字符串加解密实现分析 近期项目有个需求.就是要对用户的敏感信息进行加密处理,比方用户的账户password,手机号等私密信息.在java中,就对字符串的加解密我们能够使用A ...
- 【VBA研究】如何用Base64 编解码方法实现简单的加解密
Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码,将数据变成字符串实现文本传输.由于编码简单,所以很容易实现,代码也是现成的.利用这个编码规则可以实现简单的加解密.编解码方 ...
- iOS - (base64对字符串加解密)
今天公司让做支付系统,为了安全起见,需要对一些数据进行加密,然而我首想到的就是 base64 ,严格来说这不是一种加密方式,这只是将原有的一些字符串或者其它的一些文本进行一个转化而已,就是转化成数字, ...
- 华为OJ:字符串加解密
题目描述 1.对输入的字符串进行加解密,并输出. 2加密方法为: 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B:字母Z时则替换为a: 当内容是数字时则把该 ...
- iOS开发:用DES对字符串加解密
参考http://www.cnblogs.com/janken/archive/2012/04/05/2432930.html,做了个小修改,实现PHP,JAVA,Objective-c加解密结果相同 ...
- C#常用字符串加解密方法封装
C#中常用的字符串加密.解密方法封装,包含只加密但不解密的方法.收藏起来备用. //方法一 //须添加对System.Web的引用 //using System.Web.Security; /// & ...
- 基于Crypto++的aes 字符串加解密实现
esaes.h: #ifndef ESAES_H #define ESAES_H #include <cryptopp/aes.h> #include <iostream> # ...
- 加解密、PKI与CA基础
介绍 这门知识如果以前尝过的各位想必都知道:枯燥无比!因此在文中我会尽量讲的生动些,举一些例子,并试图以一个完整的例子来贯穿整个讲述过程.今年又恰逢莎翁逝世400周年,一方面也为了纪念这位伟大的作家. ...
- 学习Java AES加解密字符串和文件方法,然后写个简单工具类
Reference Core Java Volume Ⅱ 10th Edition 1 对称加密 "Java密码扩展"包含了一个Cipher,它是所有密码算法的超类.通过getIn ...
随机推荐
- Why many EEG researchers choose only midline electrodes for data analysis EEG分析为何多用中轴线电极
Source: Research gate Stafford Michahial EEG is a very low frequency.. and literature will give us t ...
- Could not load type 'System.Web.Mvc.ViewPage<dynamic>' in asp.net mvc2 after publishing the website
在WebConfig里 找到 <pages></pages> <pages pageParserFilterType="System.Web.Mvc.ViewT ...
- virtualBox安装Centos7之后
之前用vmware装虚拟机的时候,直接配置好网卡就可以ping通,可以用ssh登录,然后配置yum源,万事大吉. 但是virtualBox配置却有不同,需要按下面的方法配置: 选中虚拟机->设置 ...
- [LeetCode] Range Addition 范围相加
Assume you have an array of length n initialized with all 0's and are given k update operations. Eac ...
- 【Git】关于VSCode 内置Git问题
VSCode的内置git是自动关联本机git的, 所以当提交代码时,VSCode提示[警告:请配置git用户名和账户]时, 只需要在git bash 端配置git config --gobal use ...
- 用 ElementTree 在 Python 中解析 XML
用 ElementTree 在 Python 中解析 XML 原文: http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python- ...
- CURL HELP
CURL下载 在windows的系统环境变量中,将CURL的路径(curl.exe存放的路径)复制到"Path"变量的结尾 Usage: curl [options...] < ...
- System.Environment.CurrentDirectory和Application.StartupPath
System.Environment.CurrentDirectory的含义是获取或设置当前工作路径,而Application.StartupPath是获取程序启动路径,表面上看二者没什么区别,但实际 ...
- 利用filter过虑用户请求URI显示对应页面内容
目的:只是想验证一下filter对URI的过滤 流程讲解:浏览器请求URI,所有请求都走过虑器,在过滤器中处理符合某种请求的URI然后显示对应的页面内容 有2个JSP页面: index.jsp: &l ...
- delphi 2010与delphi XE破解版的冲突
在系统中同时安装了Dephi 2010LITE版与Delphi XE lite后,总是会有一个有问题 是因为两者都是读取C:\ProgramData\Embarcadero目录下的license文件, ...