linux下intel IPP 加密库安装及快速上手

在最新的IPP 2018中,intel 将ippcp加密库从IPP 库中分离了出来,可以单独安装使用。对各个平台有很不错的兼容性,同时也对SGX提供了支持

一. 安装ippcrypto

1.https://software.intel.com/en-us/get-ipp-cryptography-libraries intel的ippcp下载页面,如果没有intel开发者账号,则需要注册账号


2.下载ippcp

3.解压 l_ippcp_2018.1.163.tgz

进入下载目录 tar zxvf l_ippcp_2018.1.163.tgz

4.安装

进入解压出的文件夹  ./install_GUI.sh

5.配置环境变量(optional)

编辑用户环境变量 ~/.bashrc (/etc/profile 对应su)添加

export IPPCRYPTOROOT=/opt/intel/compilers_and_libraries_2018.1.163/linux/ippcp
export LD_LIBRARY_PATH=$IPPCRYPTOROOT/lib/intel64_lin:D_LIBRARY_PATH

保存后

source ~/.bashrc


二.使用

AES_GCM 加解密

1.写一个简单的 ippcptest.cpp

#include "ippcp.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int AES_GCM_ContextSize=0;
int main(int argc, char* argv[])
{
	IppStatus istate;
	unsigned char pkey[16]={1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8};//16||32||64
	unsigned char pIV[16]={1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8};
	int keyLen=16;
	Ipp8u* pKey=pkey;
	ippsAES_GCMGetSize(&AES_GCM_ContextSize);

//encryption
	IppsAES_GCMState* gcm_context=(IppsAES_GCMState*)malloc(AES_GCM_ContextSize);
	istate=ippsAES_GCMInit(pKey,keyLen,gcm_context,AES_GCM_ContextSize);
	char a[12]="hello world";
	unsigned char b[12];
	ippsAES_GCMProcessIV(pIV,16,gcm_context);
	ippsAES_GCMStart(pIV,16,NULL,0,gcm_context);
	istate=ippsAES_GCMEncrypt((unsigned char*)a,b,12,gcm_context);
	for(int i=0;i<12;i++){
		printf("%02x ",b[i]);
	}
	printf("\n");
//decryption
	unsigned char c[12];
	IppsAES_GCMState* gcm_context2=(IppsAES_GCMState*)malloc(AES_GCM_ContextSize);
	istate=ippsAES_GCMInit(pKey,keyLen,gcm_context2,AES_GCM_ContextSize);
	ippsAES_GCMProcessIV(pIV,16,gcm_context2);
	ippsAES_GCMStart(pIV,16,NULL,0,gcm_context2);
	istate=ippsAES_GCMDecrypt(b,c,12,gcm_context2);

	for(int i=0;i<12;i++){
		printf("%c",c[i]);
	}
	printf("\n");
	return 0;
}

2.写一个makefile

Include_Path := /opt/intel/compilers_and_libraries_2018.1.163/linux/ippcp/include
Link_Path := /opt/intel/compilers_and_libraries_2018.1.163/linux/ippcp/lib/intel64_lin
Link_Flag := -L$(Link_Path) -lippcp -static 
app:
	gcc -c ippcptest.cpp -I$(Include_Path)
	gcc -o app ippcptest.o $(Link_Flag)

clean:
	rm app ippcptest.o

3.make

./app

显示密文和明文,就OK


猜你喜欢

转载自blog.csdn.net/y734564892/article/details/78761505