美文网首页程序员
安卓系统应用程序纯命令行编译环境_第二个C程序md5Test.c

安卓系统应用程序纯命令行编译环境_第二个C程序md5Test.c

作者: 客昂康 | 来源:发表于2019-03-11 20:10 被阅读5次

NDK是不含openSSL的,本日志记录了安卓系统下C程序如何使用openSSL的加密库。

  • 新建md5Test.c文件,内容如下:
#include <stdio.h>
#include <string.h>
#include <openssl/md5.h>

int main(int argc, char* argv[]){
    unsigned char buffer[32];
    MD5_CTX ctx;
    MD5_Init(&ctx);
    
    if(argc >= 2){
        printf("str = \"%s\"\n", argv[1]);
        MD5_Update(&ctx, argv[1], strlen(argv[1]));
    }
    else{
        printf("str = \"%s\"\n", argv[0]);
        MD5_Update(&ctx, argv[0], strlen(argv[0]));
    }
    MD5_Final(buffer, &ctx);
    printf("MD5 = %02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\n",
        buffer[0],  buffer[1],  buffer[2],  buffer[3],
        buffer[4],  buffer[5],  buffer[6],  buffer[7],
        buffer[8],  buffer[9],  buffer[10], buffer[11],
        buffer[12], buffer[13], buffer[14], buffer[15]
    );
    return 0;
}

这段程序仅仅使用了openSSL加密库的MD5接口,可以计算输入字符串的MD5值。

  • 下载openSSL,从中提取所需头文件,或者从已有的编译环境中拷贝一份。这里我是从已配置好的,有用到openSSL加密库的环境中拷贝一份,放在md5Test.c所处同一目录下的"openssl"目录下。

  • 下载openSSL,用NDK编译一份openSSL的加密库。其实安卓系统自带有openSSL的加密库,其路径是"/system/lib/libcrypto.so"。这里我直接将"/system/lib/libcrypto.so"拷贝到md5Test.c所处同一目录下的"lib"目录下。

  • 编辑makefile文件,给编译器添加openSSL的头文件的搜索路径和动态库的搜索路径:


ARG1=-ID:\Android\ndk64\sysroot\usr\include -ID:\Android\ndk64\sysroot\usr\include\arm-linux-androideabi -I. -Wall -Wno-attributes
ARG2=--sysroot=D:\Android\ndk64\platforms\android-19\arch-arm -L.\lib -lcrypto -Wall

md5Test.out : md5Test.o
    arm-linux-androideabi-gcc.exe -o md5Test.out md5Test.o $(ARG2)

md5Test.o : md5Test.c
    arm-linux-androideabi-gcc.exe -c -o md5Test.o md5Test.c $(ARG1)

cls:
    del md5Test.o
    del md5Test.out

记于2019-03-11

相关文章

网友评论

    本文标题:安卓系统应用程序纯命令行编译环境_第二个C程序md5Test.c

    本文链接:https://www.haomeiwen.com/subject/gmqipqtx.html