Android安全之非对称加密RSA密钥生成、加密、解密

背景:

为什么将RSA说成Android安全呢,主要这设计到市面上手机授权解BL锁,只有BL锁解开之后才能进行root等功能,比如小米和华为大部分手机都需要注册社区账号,然后申请解BL锁,BL锁就是bootloader锁,属于android系统安全入口,一旦BL锁解开,Android系统的安全等级会降低很多,如果在美帝很多支付性安全软件也不可以再用,国内目前要求还稍微低一些。当然还有很多技术也用到非对称加密。本文只是简单演示一下RSA密钥生成、加密、解密一个文件,后续会将此技术用于Android的授权框架中。

 

RSA密钥生成

生成:

openssl genrsa  -out private.pem 2048

Android安全之非对称加密RSA密钥生成、加密、解密_第1张图片

查看一下:less private.pem

Android安全之非对称加密RSA密钥生成、加密、解密_第2张图片

查看更多私钥信息可以使用下面的命令:

openssl rsa -text -in private.pem

RSA公钥生成

生成:

openssl rsa -in private.pem -outform PEM -pubout -out public.pem

Android安全之非对称加密RSA密钥生成、加密、解密_第3张图片

查看一下:

less public.pem

Android安全之非对称加密RSA密钥生成、加密、解密_第4张图片

RSA加密文件

生成文件:

echo "hello world" > plain.txt

加密:

catplain.txt | openssl rsautl -encrypt -pubin -inkey public.pem > cipher.txt

查看加密文件,发现乱码:

Android安全之非对称加密RSA密钥生成、加密、解密_第5张图片

RSA解密文件

解密:catcipher.txt | openssl rsautl -decrypt  -inkey private.pem 

解密结果,可以看到加密后的文件解密出的数据是”hello world“,解密成功。

加密一个大文件会报错

140171964634776:error:0406D06E:rsa routines:RSA_padding_add_PKCS1_type_2:data too large for key size:rsa_pk1.c:153:

原因是“非对称加密的数据不能大于数据大小”。!!!!

总结:

如果将”hello world“换成小米要求用户输入的IMEI号,然后后台服务器用Public key进行一下加密,然后手机里面出厂预置了Prviate key,解密后,

和你输入IMEI相同,BL锁就进行unlock,这样不进行了授权解锁了嘛!当然还有很多其他工作要做,后续将在出文章描述。

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Android)