Linux Kernel(Android) 加密算法汇总(四)-应用程序调用OpenSSL加密演算法
2024-10-10 03:08:01
Linux Kernel(Android) 加密算法总结(三)-应用程序调用内核加密算法接口
讲到了怎样调用内核中的接口的方法。
本节主要是介绍怎样Android C/C++应用程序调用Openssl的AES加密算法。
crypt_ssl.c
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <aes.h>
#include <sys/socket.h>
#include <linux/if_alg.h>
#include <evp.h> #include <stdio.h>
#include <stdlib.h> #ifndef AF_ALG
#define AF_ALG 38
#define SOL_ALG 279
#endif #define BUF_SIZE 16 static void crypt_ssl(char *in, int inlen, char *out,const char *key, char *iv)
{
AES_KEY akey;
AES_set_encrypt_key(key, 128, &akey);
AES_cbc_encrypt(in, out, inlen, &akey, iv, 1);
} int main(int argc, char **argv)
{
int i;
char out[BUF_SIZE] = {0};
char in[BUF_SIZE] = "Single block msg";
const char key[16] =
"x06xa9x21x40x36xb8xa1x5b"
"x51x2ex03xd5x34x12x00x06";
char iv[16] =
"x3dxafxbax42x9dx9exb4x30"
"xb4x22xdax80x2cx9fxacx41"; if(argc != 2)
{
printf("usage:compare openssl / compare kernel \n");
} if(strncmp(argv[1], "openssl", 7) == 0)
{
printf("encrypt by openssl...n");
crypt_ssl(in, BUF_SIZE, out, key, iv);
} for (i = 0; i < BUF_SIZE; i )
printf("0x", (unsigned char)out[i]);
printf("n");
return 0;
}
在Android 源码编译文件:
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS) LOCAL_MODULE := myencrypt LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := \
crypt_ssl.c LOCAL_SHARED_LIBRARIES := \
libdl \
liblog \
libcrypto LOCAL_C_INCLUDES := \
external/openssl/include/openssl \
external/openssl/include include $(BUILD_EXECUTABLE)
编译完毕后在
adb push testhash /system/bin/
adb shell chmod a+x /system/bin/testhash
adb shell testhash
验证输出结果.
最新文章
- HTTP 错误 500.24 - Internal Server Error的解决方法
- Linux 输入子系统
- 树莓派加入定时任务实现花生壳定时重启(linux的定时任务)
- Android MVC框架模式
- Java中普通代码块,构造代码块,静态代码块的代码演示样例及区分
- Xcode的Architectures、Valid Architectures和Build Active Architecture Only属性(原创)
- ASP.NET WebApi 使用Swagger生成接口文档
- Winfrom 简单的安卓手机屏幕获取和安卓简单操作
- 使用axios以及http-proxy-middleware代理处理跨域的问题
- ●BZOJ 4408 [Fjoi 2016]神秘数
- Unity文档阅读 第一章 入门
- gulp的使用(二)之gulpfile.js文件的配置
- js实现图片旋转
- SQL里执行CLR c#代码
- LeetCode——12. Integer to Roman
- ubuntu 16042 安装过程
- noip第2课资料
- LeetCode 292 Nim Game(Nim游戏)
- umeng友盟消息推送功能集成
- ABAP知识点提纲
热门文章
- JavaScript学习总结1
- 关于ubuntu下qt编译显示Cannot connect creator comm socket /tmp/qt_temp.xxx/stub-socket的解决的方法
- NET单元测试的艺术
- hdu 1028 母函数 一个数有几种相加方式
- thinkPHP四种URL访问方式(二)
- hdu4496 D-City
- 图像特征提取方法:Bag-of-words
- C++ Primer 学习笔记_61_重载操作符与转换 --自增/自减操作符
- HTC one/M7电信802d 毒蛇ViperOne2.1.0/高级毒蛇工具/完美root,精简/更多自定义,稳定,流畅ROM
- 利用try-catch判断变量是已声明未声明还是未赋值