RSA算法以及MD5算法
来源:互联网 发布:易语言魔域破仓库源码 编辑:程序博客网 时间:2024/04/29 11:34
RSA算法经常用于少量数据加密,具有安全性高但是速度较慢的优缺点,这是一种非对称密码算法,所谓非对称,即是指该算法加密需要一对密钥,一个密钥用于加密,一个密钥用于解密。其安全性基于大数分解的难度
RSA算法涉及到三个参数:n,e1,e2:
其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。
e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。
(n,e1),(n,e2)就是密钥对。其中(n,e1)为公钥,(n,e2)为私钥。
RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e2 mod n;B=A^e1 mod n;(公钥加密体制中,一般用公钥加密,私钥解密)
e1和e2可以互换使用,即:
A=B^e1 mod n;B=A^e2 mod n;
RSA生成密钥对
第一种方法:代码中生成随机密钥对
/** * 生成随机密钥对 * @param keyLength 通常为512或者1024位长度 * @return */public static KeyPair generateRSAKeyPair(int keyLength) {try {KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");kpg.initialize(keyLength);return kpg.genKeyPair();} catch (Exception e) {e.printStackTrace();return null;}}KeyPair kp = generateRSAKeyPair(1024);PrivateKey kp_private = kp.getPrivate();PublicKey kp_public = kp.getPublic();第二种方法:通过openSSL工具生成密钥对
genrsa -out rsa_private_key.pem 1024生成私钥
rsa -in rsa_private_key.pem -out rsa_public_key.pem -pubout生成公钥。
之后便可以在bin文件夹下用文本类应用打开查看私钥和公钥。
这样就生成了密钥,但是这种密钥对的私钥无法直接在代码中使用,要想使用它需借助RSAPrivateStructure这个类,java是不自带的。因此为了方便使用,我们需要对私钥进行PKCS#8编码,命令如下:
pkcs8 -topk8 -in rsa_private_key.pem -out pkcs8_rsa_private_key.pem -nocrypt
0 0
- RSA算法以及MD5算法
- md5,des,rsa算法
- RSA算法以及数学基础
- Java实现RC4加密算法、RSA算法、MD5算法
- DES, RC4, RC5, AES, RSA, MD5, SHA1 安全算法分析
- 各种加密签名算法MD5/SHA, DES,RSA,DSA,ECC
- 加解密算法总结(RSA,DES,MD5)
- RSA算法
- RSA算法
- RSA 算法
- RSA 算法
- RSA算法
- RSA算法
- RSA算法
- RSA算法
- RSA算法
- RSA算法
- RSA算法
- 集合(Ⅰ) ---------- Collection
- Android-activity生命周期
- FLOT曲线图
- Java中使用JSSE实现SSL/TLS安全协议
- sqoop配置以及使用过程小结
- RSA算法以及MD5算法
- “网络上有重名”问题解决方法
- Java基础常问问题 二
- PHP的中文乱码问题
- Android与JaveScript数据交互使用原理
- 向量的叉乘即3D中任意两个三维向量的叉乘(向量积)推导及代码实现
- Unity3D中LitJson使用
- java 二维码生成
- Python中实现对Timestamp和Datetime及UTC时间之间的转换