2017-08-21 4 views
-2

AESを使用してサーバー側でセッションIDを暗号化しましたが、クライアントサイドで暗号化されたセッションIDを解読できません.GWT用に定義されたAESライブラリがないため、AES解読をjavaでサポートしていません。 サーバ側でのAES暗号化のためのコードスニペットは、次のとおりです。 http://reassess.blogspot.in/2009/07/gwt-and-aes-decryption.htmlクライアント側のAES解読

をしかし、このありえない、作業:

public static String encrypt(String sessionId) 
{ 
    try 
    { 
     Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); 
     String key = "Abcdefghijklmnop"; 

     final SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "AES"); 
     cipher.init(Cipher.ENCRYPT_MODE, secretKey); 
     final String encryptedSessionId = Base64.encodeBase64String(cipher.doFinal(sessionId.getBytes())); 
     return encryptedSessionId; 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
    return null; 

} 

は、復号化のために私は、このリンクで提供されているコードをしようとしています。誰かがいる場合は、何か解決策を提示してください。

DESで暗号化と復号化を試しましたが、AESを使用する必要があります。

+0

セッションIDを暗号化することの目的は何ですか? –

+0

このスニペットは、IVが保存されていないため、解読不可能な暗号テキストを生成します。 IVは秘密ではないので、暗号文とともに送ることができます。通常は、単純に暗号文の前に付加され、解読の前にスライスされます。 –

+0

対称暗号だけを使用している場合は、サーバとクライアントで全く同じ鍵が必要です。サーバーからクライアントに暗号鍵を送信する場合、または他の方法で暗号鍵を暗号化する必要があります。これを行う最も簡単な方法は、TLSを使用することです。 TLSを使用する場合、データとキーは暗号化されているので、自分で暗号化する必要はありません。これは、少しの難読化のセキュリティを提供しません。あなたは読む必要があります:https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2011/august/javascript-cryptography-considered-harmful/ –

答えて

0

クライアント側ではGWTではAESがサポートされていませんが、TripleDESを使用できます。 TripleDESは非常に安全な実装です。

ここでは、ここで別の類似question

だがGWT-暗号のための既知の問題のリストです。

https://code.google.com/archive/p/gwt-crypto/issues

JavaのAESの復号化&その逆で復号化することが#1 issue- AES暗号化されたコンテンツのカント」を参照してください

+0

私はすでにDESのアプローチを実装していると私は言った。私は要件のためにAESを使用して実装する必要があります。 –

関連する問題