Código
private byte[] RC4(byte[] szBuf,byte[] szKey,int dwBufLen,int dwKeyLen){ int i,j=0; int []s=new int[256]; int dw; byte tmp; byte[] Buf=szBuf; for(i=0;i<256;i++){ s[i]=i; } for(i=0;i<256;i++){ tmp=(byte)s[i]; s[i]=s[j]; s[j]=(int)tmp; } for(dw=0;dw<dwBufLen;dw++){ i=(i+1)%256; j=(j+s[i])%256; tmp=(byte)s[i]; s[i]=s[j]; s[j]=(int)tmp; Buf[dw]^=(byte)s[(s[i]+s[j])%256]; } return Buf; } if(txtArchivo.getText().length()==0) JOptionPane.showMessageDialog(this,"No hay Archivo, seleccione uno...","RC4 para Archivos - BloodSharp",JOptionPane.ERROR_MESSAGE); else if(txtPassword.getText().length()==0) JOptionPane.showMessageDialog(this,"Escriba una contraseña...","RC4 para Archivos - BloodSharp",JOptionPane.ERROR_MESSAGE); else{ try{ int longitud=(int)file.length(); byte[] Bytes=new byte[longitud]; bufferedInput.read(Bytes,0,longitud); Bytes=RC4(Bytes,txtPassword.getText().getBytes(),longitud,txtPassword.getText().length()); fileInput.close(); bufferedInput.close(); bufferedOutput.write(Bytes,0,longitud); fileOutput.close(); bufferedOutput.close(); JOptionPane.showMessageDialog(this,"El archivo "+txtArchivo.getText()+" fue Cifrado/Descifrado","RC4 para Archivos - BloodSharp",JOptionPane.INFORMATION_MESSAGE); } JOptionPane.showMessageDialog(this,e.getClass().toString()+" "+e.getMessage(),"RC4 para Archivos - BloodSharp",JOptionPane.ERROR_MESSAGE); } } }
PS: El código de RC4 lo saque del foro: http://foro.elhacker.net/programacion_cc/encriptacion_rc4arc4-t210711.0.html;msg1000447#msg1000447
B#