日期:2014-05-20  浏览次数:20824 次

JAVA公钥加密,私钥解密(跟帖有分)
如何实现用JAVA读取证书中的公钥加密数据,然后用证书中的私钥去解密?
也就是实现数字信封的功能。
在网上查了些资料,都是用私钥加密,公钥解密的。改了段代码,但是有错误:
Java code

......................
PublicKey pk1 = cf.getPublicKey();           // 得到证书文件携带的公钥
Cipher c1 = Cipher.getInstance("RSA/ECB/PKCS1Padding");      // 定义算法:RSA
c1.init(Cipher.ENCRYPT_MODE, pk1);  
上面这句会出异常:
java.security.InvalidKeyException: No installed provider supports this key: sun.security.provider.DSAPublicKeyImpl
...........................



是否可以用 Cipher 来实现?
如果不行,可以用什么方法来实现公钥加密,私钥解密?

------解决方案--------------------
不懂这方面的,帮顶。
------解决方案--------------------
跟帖有分
------解决方案--------------------
core java卷二第十章 安全,可能有用。如果没有这本书可以下个电子版查一下相关内容。
------解决方案--------------------
我是来打酱油的
------解决方案--------------------
JCE 支持非对称加密的私钥加密公钥解密、公钥加密和私钥解密。

PS:cf 是什么?光靠这三行代码,一行异常看不出来什么。
------解决方案--------------------
跟贴有分,帮忙顶
------解决方案--------------------
DSA 不是非对称加密算法,而是数字签名算法!
------解决方案--------------------
跟贴有分,帮忙顶
------解决方案--------------------
帮 顶!
------解决方案--------------------
你那个证书是怎么生成是用 keytool 工具产生的么?具体是怎么生成的,我去生成一个来试试看。
------解决方案--------------------
修改bea下jdk1.4的安全文件,使其支持RSA/ECB/PCSK#1的填充方式。
1) 将bcprov-jdk14-143.Jar分别复制到下列路径
C:\bea8\jdk142_08\jre\lib\ 
C:\bea8\jdk142_08\jre\lib\ext\
2) 修改C:\bea8\jdk142_08\jre\lib\security\java.Security文件
在文件最后添加以下内容
security.provider.1=sun.security.provider.Sun
security.provider.2=com.sun.net.ssl.internal.ssl.Provider
security.provider.3=org.bouncycastle.jce.provider.BouncyCastleProvider


Java code

            SecretKeySpec key = new SecretKeySpec(aeskeyByte, "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            cipher.init(Cipher.DECRYPT_MODE, key);// 初始化
            byte[] result = cipher.doFinal(buf);// 解密
            return result;

------解决方案--------------------
很现实很有用的问题,我也很想知道答案!
支持一下本贴,别掉下去!
------解决方案--------------------
支持下 以前看过算法 但是后来没深入 无法提供帮助!
------解决方案--------------------
跟帖有分?
------解决方案--------------------
怎么变成在讨论公钥私钥如何产生了?公钥私钥是配对的,至于其pair如何产生通过Integer还是不通过Integer有关系吗?

RSA可以用来签名或加密,公钥进行加密,私钥来解密,现在问题是什么呢?产生了错误...再看看,出于兴趣,一起学习下 看也是很少有人搞这个领域
------解决方案--------------------
跟帖有分.....
------解决方案--------------------
学过一阵子加密技术,学的不精,学习吧,帮顶
------解决方案--------------------
探讨

To bao110908 :
已经能够从 BigInterger生成一个 PublicKey
但是,还是有些不一样:
通过KeyPair生成的privatekey是:Sun RSA private CRT key, 1024 bits
但是通过 PrivateKey priKey = kf.generatePrivate(privateSpec); 生成的,是Sun RSA privat……