我想了解更多關於AES如何通過實現在此鏈接上描述的算法http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf。我有兩種加密和解密方式,我知道我的加密是正確的,因爲在我用來測試代碼的鏈接中提供了一些示例。但是,我不確定如何測試我的解密算法是否正常工作。 我遇到的問題是我的AES實現不適用於16B輸入(它返回垃圾)。然而,它正在爲25KB的輸入工作。此外,它的工作原理是,它準確地加密和解密大部分文件,除了開頭的字節和文件末尾的字節。不幸的是,我目前沒有權限訪問整個代碼(如果需要,我可以記住所有代碼)以便在此處發佈。我希望看到有人會根據我的描述瞭解可能是什麼問題。我不完全理解除了開始和結束字節之外,文件是如何被解密的,因爲這應該是ECB模式,所以不應該把整個文件當作垃圾而不是開始和結束(因爲ECB接受一塊輸入和輸出相同大小的輸出塊)。AES-128加密/解密
回答
聽起來好像你真的在使用CBC模式,而且iv是不一樣的,可能只是爲了iv而撿垃圾。請參閱CBC mode。
最後的錯誤字節可能是一個填充問題。你如何處理要加密的輸入,其長度不是塊大小的倍數?
雖然這是問題。我沒有使用IV,也沒有使用下一個明文輸入XOR我的密文。我確定我正在使用ECB,因爲我只是將輸入複製到狀態數組中,對其進行加密,將其轉換爲數組,然後重複該過程。沒有任何鏈接。 –
你不提填充,你如何處理?你需要做的是獲得16字節,20字節和32字節的工作,這些都是簡單的情況。爲其他來源獲取參考良好加密並進行比較,是加密還是解密正確?選擇一個破碎的工作。將示例輸入和輸出添加到十六進制問題中。 – zaph
啊,我的道歉。之所以我沒有提到填充,是因爲我知道知道ECB和CBC都需要填充,除非你試圖實現密碼竊取,但也有它自己的缺點,這是衆所周知的。我在我的代碼中實現了填充,並且通過將文件長度四捨五入到16的最大倍數(因爲我使用的AES的輸入塊大小爲16字節)。之後,我解密密文並只輸出到原始文件的未填充長度。 –
- 1. 解密AES128加密的數據
- 2. Node.js aes128加密/解密端口到PHP
- 3. 解密的NSString與AES128加密
- 4. 加密mbed微控制器(C++)上的AES128-CBC並解密nodejs中的AES128-CBC
- 5. Objective-C的AES128加密
- 6. libgcrypt中的AES128不加密
- 7. 目標c和C#之間使用AES128進行加密/解密
- 8. 使用AES128 CTR在給定密鑰的iOS中加密和解密隨機NSString
- 9. AES128 iphone加密匹配,直到最後
- 10. pycrypto加密/解密,解密
- 11. 解密 - 加密加密JS
- 12. 如何使用AES-NI指令和GCC實現AES128加密/解密
- 13. 解密,加密
- 14. 任何一個可以幫助我如何解密(AES128),這在JAVA(AES解密128)進行加密
- 15. PHP - 解密加密密碼
- 16. 密碼加密/解密
- 17. 加密和解密密碼
- 18. 加密和解密
- 19. Rails加密解密
- 20. 加密/解密web.config
- 21. RSA加密/解密
- 22. Rijndael加密/解密
- 23. Cookie加密/解密
- 24. 解密加密值?
- 25. 加密和解密
- 26. 加密和解密
- 27. FormsAuthentication加密/解密
- 28. 解密加密ViewState
- 29. 加密和解密
- 30. AES加密/解密
如果不是塊大小的倍數,是否填充輸入? – Buddy
s/EBC/ECB /(電子代碼簿) –
@AlanStokes註明並修復。 –