回答
AES原語是允許加密/解密任意二進制流的結構的基礎。
AES-128採用128位密鑰和128位數據塊並「加密」或「解密」該塊。 128位是16個字節。這16個字節可以是文本(例如ASCII,每字節一個字符)或二進制數據。
一個幼稚的實現只會將一個長度超過16字節的文件分解成16個字節的組,然後用相同的密鑰加密這些文件。您可能還需要「填充」文件,使其成爲16個字節的倍數。問題在於它暴露了關於該文件的信息,因爲每次使用相同的密鑰加密相同的塊時,都會得到相同的密文。
構建AES功能有多種方法可以安全地加密/解密超過16個字節。例如,您可以使用CBC或使用counter mode。
計數器模式有點容易解釋,所以我們來看看。如果我們有AES_e(k, b)
用密鑰k加密塊b,我們不想重複使用相同的密鑰多次加密相同的塊。因此,我們將使用結構是這樣的: 計算AES_e(k, 0)
,AES_e(k, 1)
,AES_e(k, n)
現在我們可以採取任意輸入,它分成16點字節的塊,和XOR這個序列。由於攻擊者不知道他們的密鑰,他們不能重新生成這個序列並解碼我們的(更長的)消息。在上面生成的塊和明文之間逐位應用XOR。接收端現在可以生成相同的序列,與密文進行XOR並檢索明文。
在應用程序中,您還希望將此與某種身份驗證機制相結合,以便您可以使用AES-GCM或AES-CCM。
想象一下你有一個17字節的純文本。狀態矩陣將用前16個字節填充,並且一個塊將被加密。 下一個塊將剩下1個字節,狀態矩陣將填充數據以填充這些16字節的AES需求。
它適用於字節/二進制文件,因爲AES總是考慮字節unities.如果這是一個ascii塊或任何其他想法無關緊要。請記住,計算機中的所有內容都是二進制/字節/位。一旦數據成爲流數據(以字節爲單位的信息塊),它就可以正常工作。
- 1. 像AES一樣,我可以使用PGP來加密純文本嗎?
- 2. 可以將xml節點包含python列表作爲文本嗎?
- 3. 這可以在遠程計算機上工作嗎?
- 4. AES加密和RSA數字簽名方案可以協同工作以進行文件加密嗎?
- 5. Selenium:browsermob可以在RemoteWebDriver上工作嗎?
- 6. Compiz可以在Windows上工作嗎?
- 7. iFrames可以在iPhone/iPad上工作嗎?
- 8. hasattr可以在模塊上工作嗎?
- 9. Scrapy可以在PHP上工作嗎?
- 10. AES和AES的字節數是多少?
- 11. 我可以在java中序列化字節數組嗎?
- 12. 32位Lua字節碼可以在64位系統上工作嗎?
- 13. CORS和GWT現在可以工作嗎?
- 14. 我可以在字符串上使用K-means算法嗎?
- 15. 數據庫憑證以純文本格式存儲可以嗎?
- 16. 我們可以在Visual Studio 2010上工作Telerik 2010版本嗎
- 17. 腳本3代碼可以在iPhone上工作嗎?
- 18. 我可以在豬的多列上做不同的工作嗎?
- 19. 我可以使TypeKit字體在本地工作嗎?
- 20. 可以使用純文本文件進行身份驗證嗎?
- 21. Python程序可以在Web上打開文本文件嗎?
- 22. WP應用程序7.5還可以在WP8上工作嗎?
- 23. C++ 11程序可以在任何CPU上工作嗎?
- 24. Arduino引導程序可以在所有AVR上工作嗎?
- 25. python模數/模可以在大數字上工作嗎?
- 26. strstr的純字節版本?
- 27. 可執行文件如何在位/字節級別上工作?
- 28. PNG文件以字節(或位)在其上工作
- 29. HTML /純文本的innerText和特殊字符轉義序列dyamically
- 30. 什麼DOM操作可以在文本節點上完成?
很確定AES適用於任意數據。你正在試圖_implement_ AES,還是你正在使用一個庫? – zneak
我只是在研究它,但我對低槓桿數學問題感到困惑 – diegoaguilar
加密一般來說適用於二進制數據。如果你發現自己在用字符串的方式來思考事物,那麼你正在考慮錯誤的級別,例如如果你想加密一個字符串,你首先通過一個特定的編碼如UTF-8將它轉換爲一個字節序列。如果要將密鑰或加密結果存儲在字符串中,則需要再次使用合適的編碼。 Base64編碼。 –