android编译openssl
① 如何把openssl库在VxWorks下进行编译或者说把openssl库编译成vxworks下能用的.a库文件,如何去做
下一个完整版的cygwin,免费开源的东西,官网上就有下的
然后将工程文件拷入cygwin工作目录
在cygwin控制台下CD到工程目录
与上面那些步骤同时,先进入Tornado的host/x86-win32/bin目录,把该目录下的cygwin1.dll删除或者重命名(建议保留,因为Tornado编译还要用这个),然后把这个bin目录设置到windows的path环境变量中。记下bin目录下所用的编译器cc和归档程序ar的名字(比如PPC的架构就叫ccppc和arppc)
再在cygwin控制台下输入 CC=ccppc AR=arppc ./configure 运行(PPC为例,如果为其他架构等号后面的值做相应修改)
等配置完毕后打开生成的Makefile文件 找到-IInclude这一个flag修改成-I/cygwindriver/e/tornado/target/h (这里目录也只是举例,根据自己情况修改)
再之后加上-I/lib/include
保存
再在cygwin控制台下输入make运行
这时候应该就可以开始编译了
但是光做这些修改可能还是会多多少少的报错
移植细节我这一时半会也没办法细说 只能自己看报错来改了
② 如何修复android应用中的 openssl 漏洞
用电脑管家修复。
打开腾讯电脑管家——工具箱——修复漏洞
管家漏洞修复提示的补丁是经过专业的工作人员筛选的,模拟国内用户环境严格测试的,是符合用户需求的部分,腾讯电脑管家会发挥强大的技术能力为用户提供自制补丁保障安全。请及时修复管家提示的高危漏洞确保您电脑的安全。
③ android 怎么使用自己编译的openssl
自己结一下帖。是ndk api 8以下不支持libdl中某些特性的原因,添加
Application.mk
APP_PLATFORM := android-8
再次编译成功
④ linux下编译android版本的openssl动态库带有dwarf调试信息,求教怎么编译不带dwarf调试信息的动态库
编译的时候是不能调试的哦,调试只能在编译好之后,VC中默认DEBUG模式,在编译时加入调试信息,然后按下F5即可进行调试,F9下断点,F10单步跳过, F11单步跟入...SHIFT F5停止调试。。
⑤ 在MACOX上的ANDROIDSTUDIO如何编译OPENSSL原生的C库成动态的.SO库
目前暂不支持开发工具编译C、c++代码生成so文件,应该后续版本会有的。
.so 为共享库,是shared object,用于动态连接的,和dll差不多,可以这样调用so文件:
调用 System.out.println(System.getProperty("java.library.path"));
得到/usr/java/jdk1.5.0_13/jre/lib/i386,将SO文件放在该目录下
运行java程序,输出了由C语言函数计算出的结果
⑥ 执行./config编译安装openssl 之后使用make报错
2得耳朵额度得3得额度都的
⑦ 已安装OpenSSL,但编译其他软件的时候出现configure: error: openssl not found
要装openssl的开发包
sudo apt-get install libssl-dev
⑧ 求助,在android端使用openssl生成的rsapublicKey解密的相关问题
首先介绍下命令台下openssl工具的简单使用:
生成一个密钥:
openssl genrsa -out test.key 1024
这里-out指定生成文件的。需要注意的是这个文件包含了公钥和密钥两部分,也就是说这个文件即可用来加密也可以用来解密。后面的1024是生成密钥的长度。
openssl可以将这个文件中的公钥提取出来:
openssl rsa -in test.key -pubout -out test_pub.key
-in指定输入文件,-out指定提取生成公钥的文件名。至此,我们手上就有了一个公钥,一个私钥(包含公钥)。现在可以将用公钥来加密文件了。
我在目录中创建一个hello的文本文件,然后利用此前生成的公钥加密文件:
openssl rsautl -encrypt -in hello -inkey test_pub.key -pubin -out hello.en
-in指定要加密的文件,-inkey指定密钥,-pubin表明是用纯公钥文件加密,-out为加密后的文件。
解密文件:
openssl rsautl -decrypt -in hello.en -inkey test.key -out hello.de
-in指定被加密的文件,-inkey指定私钥文件,-out为解密后的文件。
至此,一次加密解密的过程告终。在实际使用中还可能包括证书,这个以后有机会再说~
-------------------------------------------------------------------------------------------------------------------
下来介绍下在程序如何利用之前生成的test.key和test_pub.key来进行信息的加密与解密(当然也可以直接利用openssl的API来生成密钥文件)。
下面是一个例子,这个例子利用已有的密钥来对source字符串进行加密与解密:
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<string.h>
4 #include<openssl/rsa.h>
5 #include<openssl/pem.h>
6 #include<openssl/err.h>
7 #define OPENSSLKEY "test.key"
8 #define PUBLICKEY "test_pub.key"
9 #define BUFFSIZE 1024
10 char* my_encrypt(char *str,char *path_key);//加密
11 char* my_decrypt(char *str,char *path_key);//解密
12 int main(void){
13 char *source="i like dancing !";
14 char *ptr_en,*ptr_de;
15 printf("source is :%s\n",source);
16 ptr_en=my_encrypt(source,PUBLICKEY);
17 printf("after encrypt:%s\n",ptr_en);
18 ptr_de=my_decrypt(ptr_en,OPENSSLKEY);
19 printf("after decrypt:%s\n",ptr_de);
20 if(ptr_en!=NULL){
21 free(ptr_en);
22 }
23 if(ptr_de!=NULL){
24 free(ptr_de);
25 }
26 return 0;
27 }
28 char *my_encrypt(char *str,char *path_key){
29 char *p_en;
30 RSA *p_rsa;
31 FILE *file;
32 int flen,rsa_len;
33 if((file=fopen(path_key,"r"))==NULL){
34 perror("open key file error");
35 return NULL;
36 }
37 if((p_rsa=PEM_read_RSA_PUBKEY(file,NULL,NULL,NULL))==NULL){
38 //if((p_rsa=PEM_read_RSAPublicKey(file,NULL,NULL,NULL))==NULL){ 换成这句死活通不过,无论是否将公钥分离源文件
39 ERR_print_errors_fp(stdout);
40 return NULL;
41 }
42 flen=strlen(str);
43 rsa_len=RSA_size(p_rsa);
44 p_en=(unsigned char *)malloc(rsa_len+1);
45 memset(p_en,0,rsa_len+1);
46 if(RSA_public_encrypt(rsa_len,(unsigned char *)str,(unsigned char*)p_en,p_rsa,RSA_NO_PADDING)<0){
47 return NULL;
48 }
49 RSA_free(p_rsa);
50 fclose(file);
51 return p_en;
52 }
53 char *my_decrypt(char *str,char *path_key){
54 char *p_de;
55 RSA *p_rsa;
56 FILE *file;
57 int rsa_len;
58 if((file=fopen(path_key,"r"))==NULL){
59 perror("open key file error");
60 return NULL;
61 }
62 if((p_rsa=PEM_read_RSAPrivateKey(file,NULL,NULL,NULL))==NULL){
63 ERR_print_errors_fp(stdout);
64 return NULL;
65 }
66 rsa_len=RSA_size(p_rsa);
67 p_de=(unsigned char *)malloc(rsa_len+1);
68 memset(p_de,0,rsa_len+1);
69 if(RSA_private_decrypt(rsa_len,(unsigned char *)str,(unsigned char*)p_de,p_rsa,RSA_NO_PADDING)<0){
70 return NULL;
71 }
72 RSA_free(p_rsa);
73 fclose(file);
74 return p_de;
75 }