-
c++代码翻译成java代码,请指教!30
这是一段c++代码:#include "stdafx.h" #include "Minica.h" #include "Des.h" #include "Window.h" #include "GfL.h" #include "md5.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif CString strMd5Key="xxxzxxxzzzx"; /******************************************************************************/ // 名称:Decrypt // 功能:解密 // 参数:KeyStr为0结尾的密钥串,长度<=16,可为任意字符 // 返回:解密成功返回true,否则返回false // 备注:当密钥长度>8时,系统自动使用3次DES解密 /******************************************************************************/ bool CDes::Decrypt(const char *OutFile,const char *InFile,const char *KeyStr) { try{ CMd5 md5; int nKeykey=5*6; nKeykey+=256; CString m_password; m_password.Format("%d%d",nKeykey,nKeykey); md5.TargetStr(strMd5Key +m_password); CString strsawkey = md5.Digest; CString m_filepath=InFile; CString m_destFile=OutFile; LARGE_INTEGER llfilesize; HANDLE hfile = CreateFile(m_filepath,GENERIC_READ,FILE_SHARE_READ, NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); if(INVALID_HANDLE_VALUE == hfile || !hfile) return false; llfilesize.LowPart = GetFileSize(hfile,(LPDWORD)&llfilesize.HighPart); CloseHandle(hfile); LONGLONG filesize = llfilesize.QuadPart; CString strflag; FILE * pfSrc = fopen(m_filepath,"rb"); if(NULL==pfSrc) return false; bool bNewJiami=false; if(filesize>500) { char pre[500]={0}; int readed= fread(pre,1,500,pfSrc); if(readed!=500) { fclose(pfSrc); return false; } if(0==memcmp(pre,flag,30)) { char szRadom[50]={0}; memcpy(szRadom,pre+50,50); char szName[200]={0}; memcpy(szName,pre+100,200); CString strRadom=szRadom; CString strName=szName; strflag=strRadom; bNewJiami=false; filesize=filesize-500; } else { strflag.Format("%ld",filesize); fseek(pfSrc,0,SEEK_SET); } } CString strNewKey=strsawkey +strflag; md5.TargetStr(strNewKey); strsawkey = md5.Digest; keyLock teaa= convert_Str_To_Key( const_cast<char *>( (const char *)strsawkey ) ); char buffsrc[4096*64]; char buffdst[4096*64]; char temp[4096*64]; FILE * pfdst = fopen(m_destFile,"wb+"); if(pfdst==pfSrc) return false; int readed =0; LONGLONG allreaded=0; int newpercent=0; int oldpercent =0; while (readed = fread(temp,1,4096*16,pfSrc)) { if(99==m_Abort) break; allreaded+=readed; int converted = First(temp,readed,teaa); if (readed != converted) { AfxMessageBox("解密出错"); fclose(pfdst); fclose(pfSrc); return false; } fwrite(temp,1,readed,pfdst); newpercent = allreaded*100/filesize; if (newpercent != oldpercent) { oldpercent=newpercent; } } fclose(pfdst); fclose(pfSrc); return true; } catch(...) { AfxMessageBox("加载后"); return false; } return true; } struct keyLock { keyLock( ) { key=NULL; keycount=0; } keyLock(int count) { key=NULL; keycount=0; key = new char[count]; if (key) { memset(key,0,count); } } ~keyLock() { if (key) { delete key; } } keyLock(const keyLock& src) { key =NULL; key = new char[src.keycount]; if (key) { //memset(key,0,src.keycount); memcpy(key,src.key,src.keycount); keycount = src.keycount; } } keyLock operator=(keyLock& src) { if (key) { delete key; keycount=0; } key = new char[src.keycount]; if (key) { //memset(key,0,src.keycount); memcpy(key,src.key,src.keycount); keycount = src.keycount; } return *this; } char *key ; int keycount ; }; keyLock convert_Str_To_Key(char* str) { int nstrcount=0; char * temp =str; while ('\0' != *temp ) { nstrcount++; temp++; } if (!nstrcount) { return NULL; } keyLock key(nstrcount*2 ); char * cur= key.key; while ('\0' != *str ) { *cur = (*str)%8 +1; cur++; *cur = (*str)/8 +1; cur++; /* *cur = ((*str)+8121)%8 +1; cur++; *cur = ((*str)+2010)/8%8 +1; cur++;*/ str++; key.keycount+=2; } return key; } int First(char *src,int count,keyLock key) { int i =0; for ( i =0;i<count;) { for (int j=0;(j<key.keycount && i<count);j++,i++) { src[i]=~src[i]; char keybit = ((1<<(key.key[j]-1)) & src[i] ); src[i] = ( (~keybit) & (1<<(key.key[j]-1) ) ) | ( ( ~(1<<(key.key[j]-1))) & src[i] ); if (ispower && ((j+3)<key.keycount)) { j++; keybit = ((1<<(key.key[j]-1)) & src[i] ); src[i] = ( (~keybit) & (1<<(key.key[j]-1) ) ) | ( ( ~(1<<(key.key[j]-1))) & src[i] ); j++; keybit = ((1<<(key.key[j]-1)) & src[i] ); src[i] = ( (~keybit) & (1<<(key.key[j]-1) ) ) | ( ( ~(1<<(key.key[j]-1))) & src[i] ); } } if (ispower) { CMd5 md5; key.key[20]='\0'; CString stroldkey =key.key; md5.TargetStr(strMd5Key + stroldkey); CString strsawkey = md5.Digest; key = convert_Str_To_Key( const_cast<char *>( (const char *)strsawkey ) ); } } return i; }
翻译好能加我扣扣(465053705)么,谢谢了2014年10月14日 00:39
目前还没有答案
相关推荐
在某些情况下,开发者可能需要将已有的C++代码转换为Java代码,以便在Java平台上运行或利用Java的生态系统。 标题“C++代码转Java工具”暗示了一个软件或服务的存在,它的功能是自动化C++源代码到Java源代码的转换...
在使用J2C工具时,用户需要确保输入的Java代码清晰、规范,以减少转换错误。转换后,开发者应仔细审查C++代码,修复潜在问题,并根据需要进行优化。同时,理解Java和C++两种语言的异同是非常重要的,这样可以更好地...
"C++转换JAVA工具" 提供了一种解决方案,使得开发者可以从C++代码无缝过渡到Java代码,或者将Java代码转换为C++,以适应不同的开发需求和环境。这种工具的主要目标是提高开发效率,降低维护成本,以及实现平台间的...
标题提到的“C++头文件代码翻译为C#的工具”就是为了帮助开发者将C++编写的DLL文件中的函数接口转换成C#可以调用的形式。 C++头文件(.h文件)通常包含了函数声明、结构体、枚举等类型定义,这些都是构建C++接口的...
在JNI开发中,通常会编写Java代码来定义本地方法,然后使用JNI头文件生成对应的C/C++代码,编译后与Java字节码一起运行。 C++转Java工具的工作原理可能包括语法解析、类型映射和代码重构等步骤。它会读取C++源代码...
c++平方数源代码!c++平方数源代码!c++平方数源代码!c++平方数源代码!c++平方数源代码!c++平方数源代码!c++平方数源代码!c++平方数源代码!c++平方数源代码!c++平方数源代码!c++平方数源代码!
JAVA代码转C++代码的工具,可以按照目录进行转换,虽然不是全部都转换的很好,但还是不错的
本文将围绕“CPlus_to_Java_Converter”这一工具,探讨如何将C++代码转换为Java代码,并分析这一过程中涉及的关键技术和挑战。 首先,我们要明确C++到Java的转换并非简单的语法替换,因为两者的语言特性差异显著。...
本文将深入探讨在Qt平台上如何实现C++与Java代码的交互。 首先,理解C++与Java交互的基本原理至关重要。这种交互通常通过JNI(Java Native Interface)来实现,它允许Java代码调用本地(如C++)代码,反之亦然。JNI...
《C++/Java代码分析器详解》 在编程领域,理解和分析代码是提升技能的关键步骤。本文将深入探讨“C++/Java代码分析器”,这是一个专为C++和Java编程爱好者设计的工具,旨在帮助他们更好地理解、分析代码,从而提升...
任意代码格式化工具(c++代码格式化工具,c代码格式化工具,java代码格式化工具,c#代码格式化工具工具,htm代码格式化l工具,javascript代码格式化工具,php代码格式化工具,asp代码格式化工具,c++代码整理工具,c代码整理...
JNI(Java Native Interface)是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。JNI在许多场景下都很有用,比如利用现有的C/C++库、优化性能敏感的代码段或者实现操作系统特定的功能。本教程将...
标题中的“在线翻软件译源代码(多国语言),C++”表明这是一个使用C++编程语言编写的在线翻译软件的源代码。这类源代码通常包含了处理文本翻译逻辑、多国语言支持以及可能的用户界面交互等功能。源代码是程序的基础...
printf("Hello from C++!\n"); } ``` 5. **编译与运行**: - 编译C++代码为动态链接库,确保链接到libjvm.so或jvm.dll。 - 运行Java程序,它会加载C++库并调用相应的本地方法。 通过上述步骤,C++和Java可以...
除了Java调用C++,C++也可以反向调用Java代码。这需要通过`env->FindClass()`, `env->GetMethodID()`等JNI API获取Java类和方法的ID,然后使用`env->Call*Method()`进行调用。这种方法适用于处理回调或者异步操作。 ...
7. **运行Java代码**: 在Java代码中通过`System.loadLibrary`加载C++编译的库,然后就可以调用本地方法了。 在提供的压缩包文件`TestJndi`中,可能包含了演示如何使用JNI与C++进行交互的示例代码。`TestJndi`可能是...
JNI允许Java代码与其他编程语言编写的代码进行交互,包括C++。在本示例中,我们将深入探讨如何使用JNI来实现这个功能。 首先,我们需要了解JNI的基本概念。JNI是一个规范,它定义了Java虚拟机(JVM)如何与本地代码...
2. **C++代码调用Java代码** - 获取JNIEnv指针:在C++代码中,通过`JNIEnv*`指针可以访问Java虚拟机和Java对象。 - 查找Java类和方法:使用`FindClass`找到Java类,`GetMethodID`获取方法ID,`NewObject`创建对象...
本压缩包文件"Android应用源码之代码调用C++代码和C++代码调用Java代码"提供了关于如何在Android应用中集成C++代码的示例,适用于那些想要深入了解跨语言编程的开发者。 1. **JNI(Java Native Interface)** JNI...