HMAC SHA-1 en Java

En una de las integraciones que realicé como opciones de pago en internet fue la implementación de Multipagos en un sitio web, una de las peculiaridades de esta plataforma es que pide un algoritmo de encriptacion llamado HMAC SHA-1 ¿cómo se implementa este algoritmo en java? este algoritmo en java se implementa como se muestra a continuacion:

public String Sha_1(String llave, String cadena) throws NoSuchAlgorithmException,InvalidKeyException{ String hmac = ""; Mac mac = Mac.getInstance("HmacSHA1"); SecretKeySpec secret = new SecretKeySpec(llave.getBytes(), "HmacSHA1"); mac.init(secret); byte[] digest = mac.doFinal(cadena.getBytes()); BigInteger hash = new BigInteger(1, digest); hmac = hash.toString(16); if (hmac.length() % 2 != 0) { hmac = "0" + hmac; } return hmac; }

se importan :
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

Dejar un comentario

JavaScript Visual QuickStart Guide 8th Edition

javaScript
Peachpit 8/ed (8-2011) | PDF | 544 Pages | 0321772970 | 20.0Mb

Descargar de Fileserv

Dejar un comentario

Header http://schemas.xmlsoap.org/ws/2004/08/addressing:Action for ultimate recipient is required but not present in the message.

Estuve varios días atorado con este error, al final resolví de esta forma:

El caso es que tenia que consumir un WS desarrollado con tecnología .NET el xml para hacer la peticion es el siguiente:

<?xml version='1.0' encoding='UTF-8'?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> <soapenv:Header xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsse:UsernameToken> <wsse:Username>XXXXX</wsse:Username> <wsse:Password>00-XX-E3-XX-A8-XX</wsse:Password> </wsse:UsernameToken> </wsse:Security> <wsa:To>http://localhost:8080/cancel/C_NC.asmx</wsa:To> <wsa:ReplyTo> <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address> </wsa:ReplyTo> <wsa:MessageID>urn:uuid:B16B96BDBCE68573161314043379608</wsa:MessageID> <wsa:Action>http://tempuri.org/ProcesaCancelacion_NotaDeCredito</wsa:Action> </soapenv:Header> <soapenv:Body> <ns1:ProcesaCancelacion_NotaDeCredito xmlns:ns1="http://tempuri.org/"> <ns1:Boleto>XXXX</ns1:Boleto> <ns1:FechaBoleto>03-08-2011</ns1:FechaBoleto> <ns1:ImporteBoleto>????6</ns1:ImporteBoleto> <ns1:ImporteIVA>0</ns1:ImporteIVA> </ns1:ProcesaCancelacion_NotaDeCredito> </soapenv:Body> </soapenv:Envelope>

El cliente lo desarrollé en java con AXIS2 utilizando WSDL2JAVA.
axis2 por default tiene como wsa=”http://www.w3.org/2005/08/addressing” y yo necesitaba wsa=”http://schemas.xmlsoap.org/ws/2004/08/addressing”

Aparte de agregar los headers de seguridad tenia que cambiar el valor de wsa y eso se hace de la siguiente forma:

XxxStub xxxStub = new XxxStub(); xxxStub._getServiceClient().getOptions().setProperty(AddressingConstants. WS_ADDRESSING_VERSION, AddressingConstants.Submission.WSA_NAMESPACE); xxxStub._getServiceClient().getOptions().setProperty("INCLUDE_OPTIONAL_HEADERS", Boolean.TRUE);

La primera instrucción instancias el stub, la segunda instrucción es para cambiar la versión del wsa y la tercera es para que acepte el cambio.

, ,

Dejar un comentario

modulo de autenticacion con Java

Buscando en la red un modulo que me ayudara a validar el password que se le pide al usuario para crear una cuenta me encontre con esto, con unas ligeras modificaciones sirvio a mis propositos.

public class autentifica extends JFrame implements ActionListener{ JPasswordField contraseña = new JPasswordField("",10); JTextField usuario = new JTextField("",10); JButton entrar=new JButton("Entrar"); entrar.addActionListener(this); public void actionPerformed(ActionEvent e){ Object fuente = e.getSource(); if (fuente==entrar){ if(authenticate()){ //Doy acceso al frame principal y a la base de datos } } public boolean authenticate() { String user = usuario.getText(); char passArray[] = contraseña.getPassword(); for (int i = 0; i < passArray.length; i++) { char c = passArray[i]; if (!Character.isLetterOrDigit(c)) return false; } String pass = new String(passArray); if ((user.equals("Patricia") && pass.equals("competencias"))||(user.equals("admin") && pass.equals("admin"))) { return true; } else { return false; } } }

;

Dejar un comentario

Si los estudiantes fueran navegadores…

jajajaj muy bueno…..

Dejar un comentario

La verdader cara de facebook

Dejar un comentario

Un buen videotutorial sobre try – catch

http://www.tutorial-lab.com/tutoriales-java/

Dejar un comentario

Tutorial de javascript

Esta página es una buena fuente de información para todos aquellos que tengan dudas sobre javascript chequenla:

http://www.elcodigo.net/index.html

Dejar un comentario

Colletions

Java Collections

Dejar un comentario

Seguir

Get every new post delivered to your Inbox.