Code: Select all
import java.util.*;
import java.security.*;
import java.security.spec.*;
import java.security.cert.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import sun.security.x509.*;
import java.io.*;
import sun.misc.BASE64Encoder;
public class KIOSKCrypto
{
public KIOSKCrypto()
{
}
static
{
java.security.Security.insertProviderAt(new com.sun.crypto.provider.SunJCE(),1);
try{
System.out.println("to be posted "+encryptPassword("<PAYGATE><MSG_CODE>AUTH</MSG_CODE><MER_URL>". "http://65.182.161.101/kioskweb/gres.php</MER_URL><MSG_HASH></MSG_HASH><TXN_DATE>". "06-12-05</TXN_DATE><MER_CODE>ME0002</MER_CODE><ORDER_NO>kiosk78061205</ORDER_NO>". "<TXN_AMT>15</TXN_AMT><TXN_CUR>INA</TXN_CUR></PAYGATE>",null));
// <PAYGATE><MSG_CODE>AUTH</MSG_CODE> <MER_URL>http://65.182.161.101/kioskweb/gres.php</MER_URL><MSG_HASH> </MSG_HASH><TXN_DATE>06-12-05</TXN_DATE><MER_CODE>ME0002</MER_CODE> <ORDER_NO>kiosk73061205</ORDER_NO><TXN_AMT>15</TXN_AMT> <TXN_CUR>INA</TXN_CUR></PAYGATE>
}catch(Exception e){
e.printStackTrace();
}
}
public static String encryptPassword(String mesg,String merchantCode) throws Exception
{
byte[] sha1_digest=null;
Cipher cipher=null;Cipher cipherWithPadding=null;
SecretKeyFactory skf=null;SecureRandom sr=null;
SecretKeySpec desKey=null;
byte[] fpxPasswdDESKeyInBytes=null;
try
{
cipher=Cipher.getInstance("DES");
System.out.println("mer code="+merchantCode);
MessageDigest sha1 = MessageDigest.getInstance("SHA1");
sha1.update(mesg.getBytes());
sha1_digest=sha1.digest();
System.out.println("SHA VALUE="+ByteArrayToHexString(sha1_digest));
String fpxPasswdDESKey="ABCDABCDABCDABCD";//getKeyFromJKS(merchantCode);//Give Your Static Key
fpxPasswdDESKeyInBytes=HexStringToByteArray(fpxPasswdDESKey);
desKey=new SecretKeySpec(fpxPasswdDESKeyInBytes,"DES");
cipher.init(Cipher.ENCRYPT_MODE,desKey);
byte[] outL= cipher.doFinal(sha1_digest);
System.out.println("des value in String "+new String(outL));
return ByteArrayToHexString(outL);
}
catch(Exception e)
{
throw new Exception ("[FPXCryptoUtils][encryptPassword] Error ..",e);
}
finally
{
sha1_digest=null;
}
}
public static String byteArrayToString(byte[] byteArray)
{
//byte[] byteArray=...............already initialised
String s="";
for(int i=0; i<byteArray.length; i++){
s+=( char )byteArray[ i ]+",";
}
return(s);
}
public static byte[] HexStringToByteArray(String strHex)
{
byte bytKey[] = new byte[(strHex.length() / 2)];
int y= 0;
String strbyte;
for (int x=0; x < bytKey.length; x++)
{
strbyte = strHex.substring(y, (y + 2));
if (strbyte.equals("FF"))
{
bytKey[x] = (byte) 0xFF;
}
else
{
bytKey[x] = (byte) Integer.parseInt(strbyte, 16);
}
y = y + 2;
}
return bytKey;
}
public static String ByteArrayToHexString(byte byteArray[])
{
StringBuffer strArray=new StringBuffer();
strArray.append("");
for (int x=0; x < byteArray.length; x++)
{
int b = ((int)byteArray[x] & 0x000000ff);
if (b < 16)
{
strArray.append("0");
strArray.append(Integer.toHexString (b).toUpperCase());
}
else
{
strArray.append(Integer.toHexString(b).toUpperCase());
}
}
return strArray.toString();
}
}