大家好,我现在生成了一个exe文件,我想用JAVA编一个加密软件,功能是在运行这个exe文件的时候可以先要用户输入注册码,输入正确了才执行这个EXE文件,这样可以实现吗??请大家讲一下思路吧!

解决方案 »

  1.   

    再main中先显示一个子Frame,这个子Frame用来接收密码,密码正确再显示主界面
      

  2.   

    不过别人已经生成了exe,我不能在别人exe这个文件的源代码里加啊,别人不会提供源代码给我的.
      

  3.   

    可以先将exe加密 然后用JFrame做个界面. 做验证, 然后再解密exe文件.再执行就可以了.
    主要部分是加密, 建议把所有数据都读到一个byte数组 用1个BYTE数挨个减去原始数据. 保存为另一个文件 ,把原始文件删除.  解密的时候再用这个BYTE数挨个减一下就还原了.
      

  4.   

    还有一点就是 程序运行完毕后,再把解密后的EXE文件删除.一直保留加密后的文件即可. 所以加密过程可以只做一次. 多次解密就可以了. 个人意见. 呵呵.
      

  5.   

    public void encode(File f1,File f2) {
                byte magicNum = 10 //随便定义
                int bufferSize = 16 // 同上     
                FileInputStream fin = new FileInputStream(f1);
                FileOutputStream fout = new FileOutputStream(f2);
                long fileLength = f1.length();
                byte [] data = new byte[bufferSize];
                int parts = (int)(fileLength/bufferSize);
            
                if (parts == 0) {
                    int bytesLeft = fin.read(data);
                    for (int i = 0; i < bytesLeft; i++) {
                        data[i] = (byte)(magicNum - data[i]);
                    }
                    if (bytesLeft != -1) {
                        fout.write(data,0,bytesLeft);
                        System.out.print("100%");
                    }
                }
                else {
                    
                    for (int i = 0; i < parts; i++) {
                        fin.read(data);
                        for (int j = 0; j < bufferSize;j++) {
                            data[j] = (byte)(magicNum - data[j]);
                        }
                        fout.write(data);
                        
                        
                    }
                    int bytesLeft = fin.read(data);
                    for (int i = 0; i < bytesLeft; i++) {
                        data[i] = (byte)(magicNum - data[i]);
                    }
                    if (bytesLeft != -1) {
                        fout.write(data,0,bytesLeft);
                    }
                    f1.delete();
                    fin.close();
                    fout.close();
                }
                          
                
               
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }
      

  6.   

    多谢pauliuyou回复,pauliuyou上面的程序是做加密还是解密??