-
-
[分享]Android逆向——RSA加密算法
-
发表于:
2021-1-5 17:04
4108
-
1、RAS算法简介
RSA是最流行的非对称加密算法之一。也被称为公钥加密。它是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。
RSA是非对称的,也就是用来加密的密钥和用来解密的密钥不是同一个。和DES一样的是,RSA也是分组加密算法,不同的是分组大小可以根据密钥的大小而改变。如果加密的数据不是分组大小的整数倍,则会根据具体的应用方式增加额外的填充位。
RSA作为一种非对称的加密算法,其中很重要的一特点是当数据在网络中传输时,用来加密数据的密钥并不需要也和数据一起传送。因此,这就减少了密钥泄露的可能性。RSA在不允许加密方解密数据时也很有用,加密的一方使用一个密钥,称为公钥,解密的一方使用另一个密钥,称为私钥,私钥需要保持其私有性。
RSA被认为是非常安全的,不过计算速度要比DES慢很多。同DES一样,其安全性也从未被证明过,但想攻破RSA算法涉及的大数(至少200位的大数)的因子分解是一个极其困难的问题。所以,由于缺乏解决大数的因子分解的有效方法,因此,可以推测出目前没有有效的办法可以破解RSA。
2、RSA算法的原理
RSA算法基于的原理,基本上来说,加密和解密数据围绕着模幂运算,这是取模计算中的一种。取模计算是整数计算中的一种常见形式。x mod n的结果就是x / n的余数。比如,40 mod 13 = 1,因为40 / 13 = 3,余数为1。模幂运算就是计算ab mod n的过程。
3、eclipse中讲解PBE算法的代码
1)分析主类Mainactivity
主要分析这几个方法:
encryptByPrivateKey:私钥加密;
decryptByPublicKey:公钥解密
encryptByPublicKey:公钥加密;
decryptByPrivateKey:私钥解密
2)分析RSA类
关注这几个方法:
generateKeyPair:生成密钥对
getPublic:获取公钥
getPrivate:获取私钥
PKCS8EncodedKeySpec:根据给定的编码密钥创建一个新的 PKCS8EncodedKeySpec
KeyFactory:密钥工厂用于将密钥(Key 类型的不透明加密密钥)转、换成密钥规范(底层密钥材料的透 明表示)
generatePublic:根据提供的密钥规范(密钥材料)生成公钥对象
小结
1、介绍RSA相关的算法以及实现原理。
2、在eclipse中分析了RSA算法的代码。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)