簡體   English   中英

加密NetSuite Suitescript並在java應用程序中解密

[英]Encrypting in NetSuite Suitescript and decrypting in java application

我需要使用SuiteScript加密字符串,將其發送到用Java編寫的Web服務,然后在那里解密。

使用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

看起來您正在使用AES進行加密,並使用DES進行解密。 我認為密文需要使用您用於加密的相同對稱算法進行解密。

目前看來,如果使用SuiteScript加密消息,則必須使用Suitescript來解密消息。 見suiteanswers:35099

建議的解決方法是使用外部JavaScript庫加密/解密。 我們最終在javascript上使用OpenJS,但是在java方面必須確保根據javascript端的設置調整默認值。 Java API在這方面比javascript更靈活。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM