本文将主要介绍,如何在应用程序空间中(user space) 调用内核空间(kernel space)加密模块提供的加密算法API。

方法一:通过调用crypto: af_alg - User-space interface for Crypto API, Herbert Xu 2010年,给内核2.6.X 接口实现

下面根据以上方法实现应用程序调用内核加密算法接口示例:

该方法经过在内核层实现与CPU加密模块,或者硬件加密卡对接,并为上层应用程序提供接口的方式,可以实现硬件加密。

应用程序调用内核hash

hash.c

#include

#include

#include

#ifndef AF_ALG

#define AF_ALG 38

#define SOL_ALG 279

#endif

int main(void)

{

int opfd;

int tfmfd;

struct sockaddr_alg sa = {

.salg_family = AF_ALG,

.salg_type = "hash",

.salg_name = "sha1"

};

char buf[20];

int i;

tfmfd = socket(AF_ALG, SOCK_SEQPACKET, 0);

bind(tfmfd, (struct sockaddr *)&sa, sizeof(sa));

opfd = accept(tfmfd, NULL, 0);

write(opfd, "abc", 3);

read(opfd, buf, 20);

for (i = 0; i < 20; i++) {

printf("%02x", (unsigned char)buf[i]);

}

printf("\n");

close(opfd);

close(tfmfd);

return 0;

}

Andrid.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := testhash

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := \

hash.c

include $(BUILD_EXECUTABLE)

编译完成后在

adb push testhash /system/bin/

adb shell chmod a+x /system/bin/testhash

adb shell testhash

验证输出结果.

linux内核支持的加密算法,Linux Kernel(Android) 加密算法总结(三)-应用程序调用内核加密算法接口...相关推荐

  1. linux内核支持我vxlan,Linux内核轻量级隧道

    目前内核支持的封装类型由枚举类型lwtunnel_encap_types定义,如下所示支持MPLS.IP.ILA.IP6.SEG6.BPF和SEG6_LOCAL等7种类型.函数lwtunnel_val ...

  2. windows命令行下访问linux,Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux...

    原标题:Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux 晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 微软,致力于做最好的Linux发行版. 今天, ...

  3. windows兼容Linux php,支持windows与linux的php计划任务的实现方法

    本文实例讲述了支持windows与linux的php计划任务的实现方法.包括了在winows下利用winodows计划任务来操作,还有在linux中利用linux的方法来实现.分享给大家供大家参考.具 ...

  4. linux不支持modprobe命令,Linux中的Modprobe命令

    Linux内核是Linux操作系统的核心组件. 它管理系统的资源,并且是计算机硬件和软件之间的桥梁. Linux内核具有模块化设计. 内核模块(通常称为驱动程序)是一段扩展内核功能的代码. 模块要么编 ...

  5. Android系统JNI使用(JAVA调用C语言接口)一

    目录 第一篇:Android系统JNI使用(JAVA调用C语言接口)一 什么是JNI JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信主要是 ...

  6. linux内核支持浮动ip,Linux配置浮动IP

    在高可用集群环境中,一般都需要使用浮动IP来实现web高可用(High Availability). 本篇文章主要讲实际操作步骤: 可以是双机,也可以是多机,主服务器为10.61.1.22,从服务器为 ...

  7. linux内核支持浮动ip,Linux配置浮动IP实现WEB高可用

    在高可用集群环境中,一般都需要使用浮动IP来实现web高可用(High Availability). 浮动IP的概念以及为什么需要浮动IP请参考:浮动IP(FLOAT IP) 本篇文章主要讲实际操作步 ...

  8. linux系统支持ntfs吗,linux支持NTFS

    我的linux系统是redhat的enterprise5,缺省的情况下是不支持NTFS系统的.需要安装相应的模块.我的安装步骤是: 1,到href="" target=_blank ...

  9. linux不支持modprobe命令,Linux中modprobe命令起什么作用呢?

    摘要: 下文讲述Linux中modprobe的功能说明,如下所示: modprobe命令功能: 用于采用智能方式向内核中加载模块 或从内核中移除模块 modprobe命令的原理: modprobe命令 ...

最新文章

  1. 剑指Offer——平衡二叉树
  2. 多大、谷歌大脑获ICML 2021杰出论文奖,田渊栋、陆昱成获荣誉提名!
  3. Axure--Web原型开发工具
  4. Teradata首席分析官Bill Franks:数据分析变革犹如一场工业革命
  5. 【机器视觉】 gen_measure_rectangle2算子
  6. scrapy 搜索关键字_Scrapy 新浪微博搜索爬虫
  7. WPF 实现 DataGrid/ListView 分页控件
  8. ojdbc14_g.jar与ojdbc14.jar区别
  9. Android 蓝牙扫描
  10. 2022精选最新金融银行面试真题——附带答案
  11. 万字长文 | 谷歌进入到退出中国市场的前因后果
  12. 溯光者:超简单,一文读懂显卡型号编码数字、字母怎么看,都是什么意思?
  13. 使用java实现简单推箱子游戏
  14. 大话西游中的这些经典元素,注意到没?
  15. OpenCV 读写图像、读写像素、修改像素值(案例:图像反处理)
  16. 虚拟打印机驱动开发——ImagePrinter(一)
  17. java list 交集 并集 差集 去重复并集
  18. Zookeeper介绍(通俗易懂)
  19. screen 状态为Attached 连不上
  20. IT人看《国富论》系列:第一篇之第四章:论货币的起源及其效用。UML是软件行业的货币...

热门文章

  1. Eclipse查找文件存储路径
  2. 怎么实现hover_web前端CSS实现一个粒子动效的按钮
  3. 出现一个黑色框按不动_创意 | 这才是走心的衣架设计,给衣服一个高逼格的家!...
  4. python带参数的装饰器_Python-----带参数的装饰器以及补充
  5. java 析构函数_C++虚函数
  6. sqlite3_setp
  7. python获取pid并杀死_用python记录运行pid,并在需要时kill掉它们的实例
  8. python免费学校_清华大学,的python学习路线,免费分享给小白福利
  9. 第十五节:深入理解async和await的作用及各种适用场景和用法
  10. 第六节:深入研究Task实例方法ContinueWith的参数TaskContinuationOptions