關於藍牙通信的數據AES128 ECB加密解密


因為AES128-ecb加密密鑰采用了256位(32字節)的形式,而AES加密的位數是和密鑰長度掛鈎的,所以在剛拿到藍牙協議的時候,一臉懵逼。為啥16字節的數據通過AES128-ecb加密后還是16個字節,此時我一直認為應該是32個字節(因為我測試也是返回的32個字節,沒毛病啊?)

但是,這是有問題的!

首先來看下我們的藍牙數據加密數據的格式:

key:

 

 

 需加密數據:

 

 

 加密后結果:

 

 

 發送16個字節,加密后也是16個字節。沒辦法啊,只能去看AES128 ECB加密的代碼了。后面發現確實之前的加密后結果長度 = 內容長度 + kCCBlockSizeAES128的長度,幾番折騰,終於可以了,現在把修改好的代碼發出來。


 

導入頭文件  #import  <CommonCrypto/CommonCryptor.h>

加密:

 

 解密:

 

 測試使用:

 

友情提示:  NSData中的是16進制的數據,0x69 = 105

不足之處,歡迎指正!也希望能對你有所幫助~

demo git地址: https://github.com/JeanOrey/AES128-ECB

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM