- 浏览: 3361856 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
RSA算法原理 http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
"非对称加密算法"。
(1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。
(2)甲方获取乙方的公钥,然后用它对信息加密。
(3)乙方得到加密后的信息,用私钥解密。
如果公钥加密的信息只有私钥解得开,那么只要私钥不泄漏,通信就是安全的。公钥用于加密, 私钥用于解密.
原文:http://my.oschina.net/u/2284972/blog/525301
RSA 是一种非对称加密算法,一般很难破解,因此一些要求比较高的系统通常会采用rsa加密算法,一般来说用RSA加密有如下几个步骤.
1. 生成公钥与私钥
2. 用公钥对需要加密的字符串等进行加密
3. 在需要解密的地方,用私钥进行解密
下面对上面的几个部分贴出代码.
1. 生成公钥与私钥
2. 读取公钥方法
3.读取私钥方法
4. 测试公钥加密,私钥解密
查看结果:
程序代码 程序代码
cipher: J���
�nE��J�b9��CO��I�?�g[B{�w��u0����}�r6
�Q��Xa��ٝ�͊��N}n�]�@��_9!D��_�|k�ͪ&g�^��ɿ�XTa$�7��*�{7�R���v�S
plain : thisIsMyPassword$7788
说明加密解密成功。
备注,这里记录的只是测试方法,当然在实际使用过程中,可能还需要 对加密后的 byte[] 采用 base64 编码,转换成字符串存储起来,在解密的时候,先通过 base64 还原成 byte, 然后在解密,这样会更好。详细的方法,
可以参考这篇文章 :http://www.yihaomen.com/article/java/376.htm
"非对称加密算法"。
(1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。
(2)甲方获取乙方的公钥,然后用它对信息加密。
(3)乙方得到加密后的信息,用私钥解密。
如果公钥加密的信息只有私钥解得开,那么只要私钥不泄漏,通信就是安全的。公钥用于加密, 私钥用于解密.
原文:http://my.oschina.net/u/2284972/blog/525301
RSA 是一种非对称加密算法,一般很难破解,因此一些要求比较高的系统通常会采用rsa加密算法,一般来说用RSA加密有如下几个步骤.
1. 生成公钥与私钥
2. 用公钥对需要加密的字符串等进行加密
3. 在需要解密的地方,用私钥进行解密
下面对上面的几个部分贴出代码.
1. 生成公钥与私钥
package com.rsa; import java.io.FileOutputStream; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.SecureRandom; import java.util.Date; public class GenKeys { public static void main(String[] args) throws Exception { KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); SecureRandom secureRandom = new SecureRandom(new Date().toString().getBytes()); keyPairGenerator.initialize(1024, secureRandom); KeyPair keyPair = keyPairGenerator.genKeyPair(); String publicKeyFilename = "D:/publicKeyFile"; byte[] publicKeyBytes = keyPair.getPublic().getEncoded(); FileOutputStream fos = new FileOutputStream(publicKeyFilename); fos.write(publicKeyBytes); fos.close(); String privateKeyFilename = "D:/privateKeyFile"; byte[] privateKeyBytes = keyPair.getPrivate().getEncoded(); fos = new FileOutputStream(privateKeyFilename); fos.write(privateKeyBytes); fos.close(); } }
2. 读取公钥方法
package com.rsa; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.security.PublicKey; import java.security.spec.X509EncodedKeySpec; import java.security.KeyFactory; public class PublicKeyReader { public static PublicKey get(String filename) throws Exception { File f = new File(filename); FileInputStream fis = new FileInputStream(f); DataInputStream dis = new DataInputStream(fis); byte[] keyBytes = new byte[(int)f.length()]; dis.readFully(keyBytes); dis.close(); X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes); KeyFactory kf = KeyFactory.getInstance("RSA"); return kf.generatePublic(spec); } }
3.读取私钥方法
package com.rsa; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.security.KeyFactory; import java.security.PrivateKey; import java.security.spec.InvalidKeySpecException; import java.security.spec.PKCS8EncodedKeySpec; public class PrivateKeyReader { public static PrivateKey get(String filename)throws Exception { File f = new File(filename); FileInputStream fis = new FileInputStream(f); DataInputStream dis = new DataInputStream(fis); byte[] keyBytes = new byte[(int)f.length()]; dis.readFully(keyBytes); dis.close(); PKCS8EncodedKeySpec spec =new PKCS8EncodedKeySpec(keyBytes); KeyFactory kf = KeyFactory.getInstance("RSA"); return kf.generatePrivate(spec); } public static void main(String[] args) throws Exception, InvalidKeySpecException, IOException { PrivateKeyReader.get("d:/privateKeyFile"); } }
4. 测试公钥加密,私钥解密
package com.rsa; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import javax.crypto.Cipher; public class TestEncryptAndDecrypt { public static void main(String[] args) throws Exception { String input = "thisIsMyPassword$7788"; Cipher cipher = Cipher.getInstance("RSA"); RSAPublicKey pubKey = (RSAPublicKey) PublicKeyReader.get("d:/publicKeyFile"); RSAPrivateKey privKey = (RSAPrivateKey) PrivateKeyReader.get("d:/privateKeyFile"); cipher.init(Cipher.ENCRYPT_MODE, pubKey); byte[] cipherText = cipher.doFinal(input.getBytes()); //加密后的东西 System.out.println("cipher: " + new String(cipherText)); //开始解密 cipher.init(Cipher.DECRYPT_MODE, privKey); byte[] plainText = cipher.doFinal(cipherText); System.out.println("plain : " + new String(plainText)); } }
查看结果:
程序代码 程序代码
cipher: J���
�nE��J�b9��CO��I�?�g[B{�w��u0����}�r6
�Q��Xa��ٝ�͊��N}n�]�@��_9!D��_�|k�ͪ&g�^��ɿ�XTa$�7��*�{7�R���v�S
plain : thisIsMyPassword$7788
说明加密解密成功。
备注,这里记录的只是测试方法,当然在实际使用过程中,可能还需要 对加密后的 byte[] 采用 base64 编码,转换成字符串存储起来,在解密的时候,先通过 base64 还原成 byte, 然后在解密,这样会更好。详细的方法,
可以参考这篇文章 :http://www.yihaomen.com/article/java/376.htm
发表评论
-
Java Comparable和Comparator
2016-06-26 08:52 654http://my.oschina.net/android52 ... -
Java集合框架之fastutil & koloboke
2016-06-23 14:04 2409Java集合框架之fastutil http://rensan ... -
ehcache 分布式支持
2016-06-05 22:26 1055原文 http://my.oschina.net/glenxu ... -
Intellij IDEA插件开发入门
2016-05-26 11:42 2839原文: http://blog.csdn.net/dc_726 ... -
阿里巴巴Druid数据源的配置与使用
2016-05-24 17:42 1494http://my.oschina.net/wjme/blog ... -
mysql中间件研究(Atlas,cobar,TDDL), 分库分表插件
2016-05-09 14:15 3387http://www.guokr.com/blog/47576 ... -
Java集合: Queue和Deque
2016-05-09 09:49 1825Queue http://my.oschina.net/kev ... -
使用gzip优化web应用(filter实现)
2016-05-07 01:45 997使用gzip优化web应用(filter实现) http:// ... -
Byteman 3.0.5 发布,Java 字节码注入工具
2016-04-23 10:29 1723Byteman 3.0.5 发布,Java 字 ... -
RandomStringUtils的说明和生成随机汉字
2016-04-20 15:21 1315更多参考: http://my.oschina.net/wil ... -
通过IP地址获取地理位置
2016-04-20 15:19 854http://my.oschina.net/githubhty ... -
Java编程中使用正则表达式过滤非数字字符串
2016-04-14 13:51 1673/** * * @param str ... -
非对称加密DH算法,DH代码实现
2016-04-13 11:33 1315RSA算法原理(一)http:// ... -
企业支付宝账号开发接口教程
2016-03-31 14:52 1192企业支付宝账号开发接口教程--JAVA-UTF-8(实际操作- ... -
java double类型数据操作工具类
2016-03-28 17:36 1176http://my.oschina.net/yxwblog/b ... -
double转换到BigDecimal
2016-03-28 17:11 1502BigDecimal b = new BigDecimal(d ... -
Java 生成好看的验证码
2016-03-23 10:52 3303http://www.oschina.net/code/sni ... -
Linux环境安装配置Swftools
2016-03-22 21:01 1048http://tetop.blog.51cto.com/188 ... -
java压缩与解压缩文件
2016-03-20 22:03 1428http://www.oschina.net/code/sni ... -
java图像压缩
2016-03-19 23:20 917http://my.oschina.net/686991/bl ...
相关推荐
可以直接运行成功的RSA加密解密示例 JAVA端采用公钥加密,服务端C#采用私钥解密。
C++书写,采用RSA加密算法,可生成公钥和私钥加密解密。
利用System.Numerics.BigInteger实现,私钥加密,公钥解密。兼容PKCS1填充方式。有效文件只有MyRSA.cs一个,其它文件是因为带了一个演示窗口。
RSA加密算法是一种非对称加密算法,本例使用RAS公钥加密私钥解密文件。
非对象加密算法-rsa加解密 公钥加密私钥解密
Java实现,没有直接调用KeyPairGenerator,自己使用BigInteger计算公钥私钥。 有源码有jar包,包含简单的Demo,不喜欢造轮子的可以直接引入jar包...想要学习的也可以更直观的了解RSA公钥私钥生成及加密、解密过程。
RSA非对称加解密算法,目前主流的加密算法,采用大数库生成大素数,然后根据算法原理,进行大数运算;算法在生成大素数时候相对耗时,但是在加解密的时候速度比较快,目前本算法支持512-2048位的加解密算法,并测试...
RSA加密解密算法,可以实现现场的加密解密,可以更改公钥私钥。
根据证书私钥加签---》RSA公钥加密--》RSA私钥解密---》证书公钥验签
* RSA加密解密:私钥解密,公钥加密。 * RSA数字签名-俗称加签验签:私钥加签,公钥验签。 * RSA加密解密:私钥解密,公钥加密。 * RSA数字签名-俗称加签验签:私钥加签,公钥验签。 * RSA加密解密:私钥...
C# RSA加密、解密、加签、验签、支持JAVA格式公钥私钥、PEM格式公钥私钥、.NET格式公钥私钥 对应文章: http://blog.csdn.net/gzy11/article/details/54573973
rsa加密算法的加解密过程,利用公钥与私钥
RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不...
RSA为最常用的一种非对称方式的算法,这次封装的Utils类完成了公钥加密、私钥解密、私钥加签、公钥验签四种常用方法。
RSA算法,实现加密、解密文字,随机生成公钥和私钥~
公钥密钥算法的软件实现,实现rsa的私钥选取,公钥生成,以及加密实现。
这是公钥和私钥的加密算法的一个简单模拟,对初学计算机安全的人有帮助
RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被...
分别用C#、Java实现的RSA和DES加解密算法,包含demo源码,经实际项目验证。
JAVA RSA 加密算法 RSA.java RSA公钥加解密,RSA私钥加解密,MD5withRSA 签名 MD5withRSA签名较验