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