[英]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.