浏览 2587 次
锁定老帖子 主题:c++加密解密算法用java方法替代
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2015-08-05
文件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; } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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")); } } |
|
返回顶楼 | |