RSA作为迄今为止经得起历史考验的非对称加密算法,已经得到了广泛的应用。但是现在有人已经破解了768bits的因素分解。不过现在的如今的RSA算法已经是2048位。这在破解提供难度的同事,也给生成这些密钥增加了不少难度。
现在写个简单RSA 加解密实例case
首先利用java的密钥生成器来随机生成密钥:
/**
* java 自带公钥私钥生成器
* @throws Exception
*/
private static void generateKeyPair() throws Exception {
SecureRandom sr = new SecureRandom();
KeyPairGenerator kpg = KeyPairGenerator.getInstance(ALGORITHM);
/** 利用上面的随机数据源初始化这个KeyPairGenerator对象 */
kpg.initialize(KEYSIZE, sr);
/** 生成密匙对 */
KeyPair kp = kpg.generateKeyPair();
Key publicKey = kp.getPublic();
Key privateKey = kp.getPrivate();
/** 用对象流将生成的密钥写入文件 */
ObjectOutputStream oos1 = new ObjectOutputStream(new FileOutputStream(PUBLIC_KEY_FILE));
ObjectOutputStream oos2 = new ObjectOutputStream(new FileOutputStream(PRIVATE_KEY_FILE));
oos1.writeObject(publicKey);
oos2.writeObject(privateKey);
oos1.close();
oos2.close();
}
然后根据上面生成的公钥来进行加密:
/**
* 公钥加密
* @param source
* @return
* @throws Exception
*/
public static String encrypt(String source) throws Exception {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(PUBLIC_KEY_FILE));
Key key = (Key)ois.readObject();
ois.close();
/** 得到Cipher对象来实现对源数据的RSA加密 */
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] b = source.getBytes();
byte[] b1 = cipher.doFinal(b);
return new String(Base64.encodeBase64(b1));
}
最后根据私钥来进行解密:
/**
* 私钥解密
* @param target
* @return
* @throws Exception
*/
public static String decrypt(String target) throws Exception {
@SuppressWarnings("resource")
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(PRIVATE_KEY_FILE));
Key key = (Key) ois.readObject();
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] bs = Base64.decodeBase64(target);
return new String(cipher.doFinal(bs));
}
分享到:
相关推荐
RSA加密解密工具,用于各类敏感信息文件的加密和解密,压缩包内含操作说明
RSA加密解密C#实现调用实例 public string RSAEncrypt(string xmlPublicKey, string m_strEncryptString) { try { byte[] PlainTextBArray; byte[] CypherTextBArray; string Result; System.Security....
C#做的RSA加密解密, 带winform界面, 测试通过, 代码完整。
RSA加密解密算法 C++ 密码学 RSA加密解密算法 C++ 密码学 RSA加密解密算法 C++ 密码学
易语言调用JSEncrypt实现RSA加密解密。Tags:JSEncryptRSA加密解密。
前端RSA加密解密的使用,含jsencrypt.js文件(uni-app也可用)
rsa加密解密算法C语言代码 #include #include #include <stdlib.h> #include <time.h> #include #include #define MAX 100 #define LEN sizeof(struct slink) void sub(int a[MAX],int b[MAX] ,int c[MAX] ); ...
Android RSA加密解密demo,详情请参看博客:http://blog.csdn.net/bbld_/article/details/38777491
采用OpenSSL进行RSA加密解密,对Delphi-OpenSSL进行重构。 1、支持公钥加密、解密,私钥加密解密。 2、支持PKCS1和PKCS8两种密钥格式。 3、支持PKCS#1 v1.5、PKCS#1 OAEP、SSL v2等填充方式。 4、支持生成密钥对。 5...
RSA加密解密算法源码,功能齐全,没有密码,使用方便,学习用.
实现了完整的RSA加密解密算法的使用,使用公钥加密解密和使用私钥加密解密,数字认证等等,直观清晰的演示RSA的用法,让不懂得人一看就会用
RSA加密解密算法,相当不错的例子,适合初学者参考
可以运行的C++版RSA加密解密算法,有注释详细
JAVA+RSA的DEMO工程,适合初学者学习RSA加密解密 文档参看 http://blog.csdn.net/u013400939/article/details/44490441
RSA加密解密C++代码 是RSA加密及其解密的具体代码。有利于参考
JS用RSA加密解密技术对密码进行加密解密,再在后台使用对应公钥私钥参数进行解密,提升数据安全 jsencrypt.min.js
RSA加密解密实例,环境eclipse + maven
RSA加密解密程序及代码,可以按要求的位数生成非对称密钥。可以保存密钥和装载密钥,密钥保存为纯文本。可以用指定密钥以RSA算法加密任意一个文件,加密生成的数据为纯文本。可以装载加密过的文件,并用指定的密钥...
RSA加密演算法是一种非对称加密演算法。在公开密钥加密和电子商业中RSA被广泛使用。 典型的应用 1. 苹果App签名, iOS App 签名的原理; 2. 支付宝签名验证 ; 2. HTTPS 加密连接; 3. 程序直接用RSA+AES加密通信 ...
rsa加密解密程序, 基础类应用程序,Mfc界面直接可输入