2012-10-11 260 views
-1

我有一個用於從abcde.test.com取消註冊的加密電子郵件ID。AES -256解密

用於離:https://abcde.test.com/Forms/unSubscribe.jsp?n=2&rid=00028e7353d9c4eca480a579e10ef09b&eid=588876054d458e62779be9345f399252cac7346ad8c464b8ed0bdfbff3512dd96a5b4190c5d71c30c90c34ff39e544aa

這被加密AES-256.where EID = 「加密後的消息」,並且當與密鑰大小組合除掉,和keystr(如 「6a6b663472346c38736873346569727538346234333534376635333962353666」)形成的編碼密鑰。

現在我想解密這個消息。 任何人都可以幫我解密嗎?

+1

你爲什麼要使用加密呢?這個URL是從哪裏生成的 - 觸發它的是什麼? –

回答

0

請使用Java SE和Apache Commons嘗試以下操作。請注意,您尚未指定密碼的模式或填充(僅「AES」),因此您可能需要進行一些調整。

// decode the key string into bytes (using Apache Commons) 
byte[] keyBytes = Hex.decodeHex(keystr.toCharArray()); 

// create a representation of the key 
SecretKeySpec spec = new SecretKeySpec(keyBytes, "AES"); 

// turn the key spec into a usable key 
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("AES"); 
SecretKey key = keyFactory.generateSecret(spec); 

// use a cipher to decrypt the eid 
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); 
cipher.init(Cipher.DECRYPT_MODE, key); 
byte[] plainText = cipher.doFinal(hex.decodeHex(eid.toCharArray())); // decode from Hex again 

我不知道eid代表什麼類型的,所以將是進入一些具體的是你的,但這裏有一個例子:

String eid = new String(plainText, "ASCII"); 
+0

感謝大衛..你能把我的整個代碼,這將真正幫助很多 –

+0

這是整個代碼。你的意思是從查詢字符串中提取它嗎? –

+0

嘿大衛..以下錯誤我得到1> Hex.decode(keyStr);錯誤類型不匹配:無法從Object轉換爲byte []和2> byte [] plainText = cipher.doFinal(Hex.decode(eid));錯誤 - 類型Cipher中的方法doFinal(byte [])不適用於參數(Object)我應該怎麼做? –