2017-07-14 39 views
0

最近我有一些文件從遠程連接作爲加密文件傳送並加載到一個Android應用程序,這些應用程序在運行時被解密。我發現在這裏可以找到與密鑰完全相同的解密代碼。不幸的是,它是在Java中,因此我不熟悉,我沒有加密的經驗。的鏈接,該模塊是這裏AES加密是否因語言而異?

https://github.com/fukata/AES-256-CBC-Example/blob/master/java/src/AESUtil.java

加密的例子是在這裏 https://zerobin.net/?c5fd41740c9301ef#iNG7oNExRZwK4hBEKP7ZORDBj1fcPZxyjLQZeAihGZ8=

我一直在試圖通過使用VB.NET發現AES公用事業對其進行解密,但不幸的是它似乎沒有上班。所以我的問題是AES加密方法是不同的語言不同? IE是由Java中的AES編碼的不同於VB.NET中的 - 這意味着我將不得不直接翻譯java代碼?

謝謝!

+4

AES是一種加密算法。算法是實現結果的一組步驟。算法可以實現或者不是。它如何實施是無關緊要的。每種語言將使用該語言提供的任何工具在算法中實現每一步,然後生成結果。總之,每種語言都必須提供它自己的加密算法實現,但也必然會產生相同的結果。兩種語言產生不同結果的唯一方法是讓其中的一個或兩個不實際執行該算法。 – jmcilhinney

+0

@jmcilhinney你應該發佈這個答案。 「 –

+0

」......但不幸的是它似乎沒有工作......「。因此,請展示您的VB代碼並具體說明「它不工作」。詳細顯示輸入和輸出以及任何錯誤信息,這裏的專家將立即得到答案。 –

回答

2

您必須使用位相同的密鑰和初始化向量以及相同的塊鏈接模式,但除此之外,寫入加密算法的語言並不重要。

+1

和相同的填充,密鑰派生,名單繼續... –

0

「AES加密是否因語言而異?」沒有。

aes只是一個算法(計算指令)。 aes可能有一個參考實現,但它沒有「唯一正確的標準化實現」。

aes的實現在任何語言中都可能有點不同。例如在vb.net中,通常在aes實現中使用「Byte」作爲無符號數字的類型。但是java沒有無符號數據類型,所以你必須轉換表示負數的字節以避免編碼問題。但是你不會改變真正的加密算法。因此您可以使用任意語言的aes-implementation對數據進行加密,並使用另一種語言編寫的aes-implementation對其進行解密。如果這不起作用,則其中一個實施是有缺陷的。