2019独角兽企业重金招聘Python工程师标准>>>
AES加密是一系列的异或与循环移位操作,并没有进行扩展变换,所以明文与密文一样长,如果明文不是加密块大小的整数倍需要填充,注意ECB和CBC需要填充,即加密之后长度可能会不一样,CFB和OFB不需要填充,密文与明文长度一样。
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,否则加密之后解密就会不成功。
https://github.com/Ulez/EncryptLib中用NDK C进行AES加密,也是只有ECB/CBC,但JAVA则可以调用NDK C加密。
https://tls.mbed.org/aes-source-code则是较完备的AES代码库了,有ECB/CBC/CFB/CTR等,并且http://blog.csdn.net/easychang/article/details/51960264针对mbed的TLS库有CBC/ECB加解密演示代码。
还有一篇好文章: AES加密解密算法的C代码实现 http://blog.csdn.net/langeldep/article/details/6265680