style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Invocar desde Java a una funcíon hecha en Visual Basic

Buen día a todos.

Nuevamente me encuentro por aquí compartiendo mi problemática.
Actualmente me solicitan encriptar cadenas de texto usando el algoritmo Rijndael, pero dicha tarea se está realizando, en un principio, usando Visual Basic.
Ya hice pruebas usando la librería de BouncyCastle y no obtengo el mismo resultado. La verdad es que las personas que usan Visual Basic nos brindan muy poca información. Lo único que nos dieron fue la implementación completa del algoritmo en visual basic. Por esto, se me ocurrió crear una dll apartir de este código y después invocarla desde Java, usando JNA.
Hasta el momento no he podido conseguirlo ya que me sale la siguiente excepción:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'Suma': No se encontró el proceso especificado.

La función Suma la hice yo dentro de la clase que encripta, solo para corroborar que puedo invocar alguno de los métodos, pero no lo he logrado.
Mi código es el siguiente:

public class RijndaelFromDLL {
        public static void main(String[] args) {
                InterfazNativa nativo =
                                (InterfazNativa) Native.loadLibrary("C:/EncriptacionTribunal", InterfazNativa.class);
                System.out.println(nativo.Suma(new Integer(20), new Integer(22)));
        }
}

¿Alguna idea de como puedo solucionar esto?
De antemano gracias a todos y que tengan un excelente año, si se puede, lejos de Micro$oft :)

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Sr. Negativo

Re: invocar función VB

Existe una librería llamada jawin tal vez te sirva, http://nachxs.wordpress.com/2009/01/08/jawin-llamar-metodos-de-una-dll-con-java/

Hay mucha información sobre ese algoritmo en Internet, claro que sería bueno que postearas un pos más el código.

Por lo que se ve

Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'Suma':

no encuentra el método Suma

Haber si te sirve de algo este link http://www.codebase.com/support/kb/?article=C01032

0_o

Gracias por la Respuesta

Efectivamente, he buscado información sobre el algoritmo y es abundante, pero crear una implementación en java me resulta difícil debido a que es muy poco el tiempo que tengo para desarrollo.
También ya intenté usar jawin y no lo logré, por lo que leí, solo aplica para dll's creadas con C, C++ y Visual C++, no para las creadas con Visual Basic.
Y respecto al último link que me compartes, al parecer solo es cuando no encuentra la dll, en mi caso si la encuentra pero no puede acceder a la función Suma, la cual como les comento, fue definida por mi en Visual Basic.
Algo que se me hace raro es que para el algoritmo hecho en Visual Basic, la llave que usan es de 11 bytes y según entiendo, debería ser múltiplo de 16 bytes, o me equivoco?? de ser así, desconozco totalmente si hacen algún tipo de padding para la llave.
Gracias, saludos cordiales...

Imagen de ezamudio

Rijndael

Rijndael es básicamente AES; ni siquiera necesitas BouncyCastle pues este algoritmo viene el JDK.

Pero aparte del algoritmo, sí es importante que uses exactamente el mismo procedimiento para cifrar los datos. Tienes acceso al código en VB? porque tal vez sea mejor implementar ese procedimiento en Java y te ahorras la llamada a la DLL.

Consideraré implementarlo en Java

Gracias ezamudio.
Como bien comentas, también intenté usar la implementación que viene con el jdk pero sin éxito.
Tengo el código en VB, lo que me comentaba otro desarrollador que estuvo analizando ésta situación fue que hay una librería en VB que no existe en Java, y por lo tanto la implementación se complicaría. De cualquier forma considero esta opción.
Otra forma que encontré y se me hizo más sencilla, es publicar un WS de VB en el local y cada vez que necesite encriptar lo invoco.
No sé que tanto sea recomendable (en especial por rendimiento), considerando que tengo poco tiempo para desarrollo.
Saludos.

Imagen de ezamudio

lento

Pues lo único más lento que un web service para cifrar datos, sería que tuvieras a unos monitos con ábacos...

Bueno tal vez no. Tal vez sería más lento ejecutar un programa externo cada vez que quieres cifrar algo.

Sin duda

Concuerdo con tu comentario ezamudio, pero al exigirme dar una solución rápidamente, se optó por utilizar el WS.
De cualquier forma gracias por la ayuda y si me es posible intentaré implementar el algoritmo en futuras versiones.
Saludos....

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">