RSA加密的Java源码???高分求助。我急急急! 看看这篇文章,应该对你有用! http://www-900.ibm.com/developerWorks/cn/java/l-security/index.shtml 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 www.bouncycastle.org,什么算法都有 www.cryptix.org上也有,偶现在用的就是boucycastle和cryptix的产品。。 我在书店看到一本关于java加密的书《数据加密》,把一些hash等用java实现! 如果是开发包,那就直接看帮助文档拉。如果要自己写也可以拉。KeyPairGenerator kpg=KeyPairGenerator.getInstance("RSA");kpg.initialize(1024);KeyPair kp=kpg.genKeyPair();PublicKey pk=kp.getPublicKey();PrivateKey rk=kp.getPrivateKey();BigInteger e=pk.GetPublicExponent();BigInteger n=pk.getModulus();BigInteger d=pk.GetPrivateExponent();加密:BigInteger bpass=new BigInteger("密码".getBytes());BigInteger RSA_pass=bpass.modPow(e,n);byte[] cpass=RSA_pass.toByteArray();解密:BigInteger bpass=RSA_pass.modPow(d,n);byte[] pass=bpass.toByteArray();OK? sorry,错了一点:BigInteger d=pk.GetPrivateExponent();应该是BigInteger d=rk.GetPrivateExponent(); 在jsdk1.3中rsa算法是有出口限制的,所以使用boucycastle和cryptix等第三方软件,不过好像jsdk1.4中提供了rsa的实现。 下载cryptix32.jar包java.security.Security.addProvider(new cryptix.provider.Cryptix()); SecureRandom ran = new SecureRandom(); byte[] bb = new byte[20]; ran.nextBytes(bb); KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); keyGen.initialize(1024, ran); KeyPair pair = keyGen.generateKeyPair(); RSAPrivateKey priv = (RSAPrivateKey) pair.getPrivate(); RSAPublicKey pub=(RSAPublicKey)pair.getPublic(); //public key encrytion String a=Base64Encoder.encode(CodingUtil.GBKToIOS8859("你好")); System.out.println(a); BigInteger paintText=new BigInteger(a.getBytes()); BigInteger clipText=paintText.modPow(pub.getPublicExponent(),pub.getModulus()); System.out.println(clipText); //private key decrytion BigInteger aa=clipText.modPow(priv.getPrivateExponent(),priv.getModulus()); String b=new String(aa.toByteArray(),"ISO8859-1"); System.out.println(b); String str=Base64Decoder.decode(b); System.out.println(str); wicket框架 spring配置问题 求助!!!FileInputStream如何能取到jar包的路径 请问如何通过 Ms Exchange Server 发送邮件. 请问,如何在java里使用别人提供的web service? j2ee1.4sdk自带的Deploytool的一个问题 j2ee1.4.1 HOME接口和组件接口 CDB转PDF 关于jdbcTemplate的模糊查询sql拼接问题 JTable中的数据怎么进行数据格式转换 applet tag标记的问题(送上所有60分)
上也有,偶现在用的就是boucycastle和cryptix的产品。。
如果要自己写也可以拉。
KeyPairGenerator kpg=KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kp=kpg.genKeyPair();
PublicKey pk=kp.getPublicKey();
PrivateKey rk=kp.getPrivateKey();
BigInteger e=pk.GetPublicExponent();
BigInteger n=pk.getModulus();
BigInteger d=pk.GetPrivateExponent();
加密:
BigInteger bpass=new BigInteger("密码".getBytes());
BigInteger RSA_pass=bpass.modPow(e,n);
byte[] cpass=RSA_pass.toByteArray();解密:
BigInteger bpass=RSA_pass.modPow(d,n);
byte[] pass=bpass.toByteArray();OK?
BigInteger d=pk.GetPrivateExponent();
应该是
BigInteger d=rk.GetPrivateExponent();
java.security.Security.addProvider(new cryptix.provider.Cryptix());
SecureRandom ran = new SecureRandom();
byte[] bb = new byte[20];
ran.nextBytes(bb);
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024, ran);
KeyPair pair = keyGen.generateKeyPair();
RSAPrivateKey priv = (RSAPrivateKey) pair.getPrivate();
RSAPublicKey pub=(RSAPublicKey)pair.getPublic();
//public key encrytion
String a=Base64Encoder.encode(CodingUtil.GBKToIOS8859("你好"));
System.out.println(a);
BigInteger paintText=new BigInteger(a.getBytes());
BigInteger clipText=paintText.modPow(pub.getPublicExponent(),pub.getModulus());
System.out.println(clipText);
//private key decrytion
BigInteger aa=clipText.modPow(priv.getPrivateExponent(),priv.getModulus());
String b=new String(aa.toByteArray(),"ISO8859-1");
System.out.println(b);
String str=Base64Decoder.decode(b);
System.out.println(str);