AES加密是一系列的異或與循環移位操做,並無進行擴展變換,因此明文與密文同樣長,若是明文不是加密塊大小的整數倍須要填充,注意ECB和CBC須要填充,即加密以後長度可能會不同,CFB和OFB不須要填充,密文與明文長度同樣。git
https://github.com/kokke/tiny-AES-c/blob/master/中是嵌入式用的小型AES代碼,有ECB/CBC/CTR。這個代碼加解密時要用AES_init_ctx_iv(&ctx1, key, iv);AES_init_ctx_iv(&ctx2, key, iv);不一樣的ctx,不然加密以後解密就會不成功。github
https://github.com/Ulez/EncryptLib中用NDK C進行AES加密,也是隻有ECB/CBC,但JAVA則能夠調用NDK C加密。算法
還有一篇好文章: AES加密解密算法的C代碼實現 http://blog.csdn.net/langeldep/article/details/6265680.net