2015-07-21 1 views
3

Мне нужно зашифровать строку с помощью SuiteScript, отправить ее на веб-службу, написанную на Java, и расшифровать ее там.Шифрование в NetSuite Suitescript и дешифрование в Java-приложении

Использование SuiteScript Я могу зашифровать и расшифровать без каких-либо проблем. Но когда я использую один и тот же ключ в java, я получаю разные ошибки.

var x = "string to be encrypted"; 
var key = 'EB7CB21AA6FB33D3B1FF14BBE7DB4962'; 
var encrypted = nlapiEncrypt(x,'aes',key); 
var decrypted = nlapiDecrypt(encrypted ,'aes',key); 

^^ работает отлично ^^

Код в Java

final String strPassPhrase = "EB7CB21AA6FB33D3B1FF14BBE7DB4962"; //min 24 chars 

    SecretKeyFactory factory = SecretKeyFactory.getInstance("DESede"); 
    SecretKey key = factory.generateSecret(new DESedeKeySpec(strPassPhrase.getBytes())); 
    Cipher cipher = Cipher.getInstance("DESede"); 

    cipher.init(Cipher.DECRYPT_MODE, key); 

    String encrypted = "3764b8140ae470bda73f7ebed3c33b0895f70c3497c85f39043345128a4bc3b3"; 
    String decrypted = new String(cipher.doFinal(DatatypeConverter.parseBase64Binary(encrypted))); 
    System.out.println("Text Decryted : " + decrypted); 

С выше коде, я получаю исключение javax.crypto.BadPaddingException: Given final block not properly padded

Ключ был сгенерирован с помощью OpenSSL

openssl enc -aes-128-ecb -k mypassphrase -P 

ответ

-1

Похоже, в настоящее время у вас есть, чтобы использовать Bookscript для расшифровки сообщений, если он был зашифрован с использованием SuiteScript. См. Список люксемпер: 35099

Обходным решением является использование внешней библиотеки javascript для шифрования/дешифрования. Мы закончили использование OpenJS на javascript, но на стороне Java пришлось убедиться, что настройки по умолчанию были скорректированы в соответствии с настройками на стороне javascript. Java API были более гибкими в этом отношении, чем javascript.

1

похоже, что вы шифруете AES и расшифровываете DES. Я думаю, что шифрованный текст необходимо расшифровать с помощью того же симметричного алгоритма, который вы использовали для шифрования.

Смежные вопросы