因為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