论坛首页 编程语言技术论坛

c++加密解密算法用java方法替代

浏览 2547 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2015-08-05  
C++
有两个c++文件,里面有加密,解密算法,求大神把加密,解密算法用java实现,求大神。
文件Crypt.h

#if !defined(AFX_CRYPT_H__613C5174_16F0_42A5_9493_C7489534C080__INCLUDED_)
#define AFX_CRYPT_H__613C5174_16F0_42A5_9493_C7489534C080__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CCrypt 
{
static char *m_key;
public:
static CString decrypt(CString str);
static CString encrypt(CString str);
};

#endif // !defined(AFX_CRYPT_H__613C5174_16F0_42A5_9493_C7489534C080__INCLUDED_)

文件Crypt.cpp

#include "stdafx.h"
#include "crypt.h"

#include <atlconv.h>

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Konstruktion/Destruktion
//////////////////////////////////////////////////////////////////////

char* CCrypt::m_key = "FILEZILLA1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";

CString CCrypt::encrypt(CString str)
{
USES_CONVERSION;
int pos=str.GetLength()%strlen(m_key);
CString ret;
LPCSTR lpszAscii=T2CA(str);
for (unsigned int i=0;i<strlen(lpszAscii);i++)
{
CString tmp=ret;
ret.Format(_T("%s%03d"),tmp,(unsigned char)lpszAscii[i]^m_key[(i+pos)%strlen(m_key)]);
}
return ret;
}

CString CCrypt::decrypt(CString str)
{
USES_CONVERSION;

LPCSTR lpszAscii=T2CA(str);
int pos=(strlen(lpszAscii)/3)%strlen(m_key);
CString ret;
char buffer[4];
buffer[3]=0;
for (unsigned int i=0;i<strlen(lpszAscii)/3;i++)
{
memcpy(buffer,lpszAscii+i*3,3);
TCHAR tmp[2];
tmp[1]=0;
tmp[0]=atoi(buffer)^m_key[(i+pos)%strlen(m_key)];
ret+=tmp;
}
return ret;
}
   发表时间:2015-10-27  
public class CODEUtil {

private static char THIS_FILE[]={};

private static String m_key ="FILEZILLA1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";

/***
* 编码
* @param str
* @return
*/
public static String encrypt(String str){
int pos=str.length()%(m_key.length());
String  temp="";
int ret;
String retString="";
for(int i=0;i<str.length();i++){
ret=Integer.parseInt((str.charAt(i)^(m_key.charAt((i+pos)%(m_key.length()))))+"");
retString=ret+"";
if(retString.length()==2){
retString="0"+retString;
}
else if(retString.length()==1){
retString="00"+retString;
}
temp+=retString;
}
return temp;
}
/***
* 解码
* @param str
* @return
*/
public static String decrypt(String str){
int pos=(str.length()/3)%(m_key.length());
String ret="";
for (int i=0;i<str.length()/3;i++)
{
char[] buffer=new char[3];
int dd=i*3+3;
int m=0;
for(int k=i*3;k<dd;k++){
buffer[m]=str.charAt(k);
m++;
}
char[] tmp=new char[1];
String ddStr=new String(buffer);
tmp[0]=(char) (Integer.parseInt(ddStr)^(m_key.charAt((i+pos)%(m_key.length()))));
ret+=tmp[0]+"";
}
return ret;
}
public static void main(String[] args) {
System.out.println(encrypt("tomcat"));
System.out.println(decrypt("056035044082083071"));
}
}
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics