public String decrypt(String sCipherText){
  int nLen=(sCipherText.length() >> 1) & ~7;
  if (nLen < BlowfishECB.BLOCKSIZE)   return null;
  byte[] cbciv=new byte[BlowfishECB.BLOCKSIZE];
  int nNumOfBytes=BinConverter.binHexToBytes(sCipherText,cbciv,0,0,BlowfishECB.BLOCKSIZE);
  if (nNumOfBytes < BlowfishECB.BLOCKSIZE)   return null;
  m_bfish.setCBCIV(cbciv);
  nLen-=BlowfishECB.BLOCKSIZE;
  if (nLen == 0)   return "";
  byte[] buf=new byte[nLen];
  nNumOfBytes=BinConverter.binHexToBytes(sCipherText,buf,BlowfishECB.BLOCKSIZE * 2,0,nLen);
  if (nNumOfBytes < nLen)   return null;
  m_bfish.decrypt(buf);
  int nPadByte=buf[buf.length - 1] & 0x0ff;
  if ((nPadByte > 8) || (nPadByte < 0))   nPadByte=0;
  nNumOfBytes-=nPadByte;
  if (nNumOfBytes < 0)   return "";
  return BinConverter.byteArrayToUNCString(buf,0,nNumOfBytes);
}

public String decrypt ( String sCipherText ) { int nLen = ( sCipherText . length ( ) > > 1 ) & ~ 7 ; if ( nLen < BlowfishECB . BLOCKSIZE ) return null ; byte [ ] cbciv = new byte [ BlowfishECB . BLOCKSIZE ] ; int nNumOfBytes = BinConverter . binHexToBytes ( sCipherText , cbciv , 0 , 0 , BlowfishECB . BLOCKSIZE ) ; if ( nNumOfBytes < BlowfishECB . BLOCKSIZE ) return null ; m_bfish . setCBCIV ( cbciv ) ; nLen -= BlowfishECB . BLOCKSIZE ; if ( nLen == 0 ) return "" ; byte [ ] buf = new byte [ nLen ] ; nNumOfBytes = BinConverter . binHexToBytes ( sCipherText , buf , BlowfishECB . BLOCKSIZE * 2 , 0 , nLen ) ; if ( nNumOfBytes < nLen ) return null ; m_bfish . decrypt ( buf ) ; int nPadByte = buf [ buf . length - 1 ] & 0x0ff ; if ( ( nPadByte > 8 ) || ( nPadByte < 0 ) ) nPadByte = 0 ; nNumOfBytes -= nPadByte ; if ( nNumOfBytes < 0 ) return "" ; return BinConverter . byteArrayToUNCString ( buf , 0 , nNumOfBytes ) ; }
decrypts a hexbin string ( handling is case sensitive )
