AMEX Credit Card Decryption Issue

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

AMEX Credit Card Decryption Issue

Kyle Tippetts-2
All,

I am trying to migrate an OFBiz system from a September 2004 version  
to the latest svn version (452xxx). Whenever I try to display a  
customer profile, if the customer has an American Express card as a  
payment method, I get this error in the logs:

========================
Target exception: java.lang.IllegalArgumentException: fromHexString  
requires an even number of hex characters
(Sourced file: component://party/webapp/partymgr/WEB-INF/actions/
party/editpaymentmethod.bsh : Method Invocation  
PaymentWorker.getPaymentMethodAndRelated) (Error running BSH script  
at [component://party/webapp/partymgr/WEB-INF/actions/party/
editpaymentmethod.bsh], line [32]: Sourced file: component://party/
webapp/partymgr/WEB-INF/actions/party/editpaymentmethod.bsh : Method  
Invocation PaymentWorker.getPaymentMethodAndRelated : at Line: 32 :  
in file: component://party/webapp/partymgr/WEB-INF/actions/party/
editpaymentmethod.bsh : PaymentWorker .getPaymentMethodAndRelated  
( request , partyId )
========================

Obviously that's because an AMEX number is only 15 digits (16-digit  
card numbers that are unencrypted work/display just fine).

I want to write a service that encrypts all of the card numbers and  
stores them back in the database, but when I get to an AMEX card, I  
get this error:

=========================
Problem decrypting field [CreditCard / cardNumber]
Exception: org.ofbiz.entity.EntityCryptoException
Message: Given final block not properly padded
---- stack trace  
---------------------------------------------------------------
org.ofbiz.entity.EntityCryptoException: Given final block not  
properly padded
org.ofbiz.entity.util.EntityCrypto.decrypt(EntityCrypto.java:90)
org.ofbiz.entity.GenericDelegator.decryptFields(GenericDelegator.java:
2662)
org.ofbiz.entity.GenericDelegator.findByPrimaryKey
(GenericDelegator.java:1245)
org.ofbiz.entity.GenericDelegator.findByPrimaryKey
(GenericDelegator.java:1295)
org.ofbiz.accounting.payment.PaymentWorker.getPaymentMethodAndRelated
(PaymentWorker.java:141)
=========================

And of course, that's because the AMEX number is 15 digits, and the  
decrypt method is expecting something with 16 digits.

I'm in the process of stepping through the code to figure it out, but  
in the meanwhile, has anyone encountered and dealt with this already?

Thanks,
--Kyle
====================================
--Kyle Tippetts
--[hidden email]
--801 360 2348