`
wangxuliangboy
  • 浏览: 210322 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

RSA对称加密报错原因

阅读更多

Exception in thread "main" javax.crypto.BadPaddingException: Data must start with zero
    at sun.security.rsa.RSAPadding.unpadV15(Unknown Source)
    at sun.security.rsa.RSAPadding.unpad(Unknown Source)
    at com.sun.crypto.provider.RSACipher.a(DashoA12275)
    at com.sun.crypto.provider.RSACipher.engineDoFinal(DashoA12275)
    at javax.crypto.Cipher.doFinal(DashoA12275)
    at CipherTest.rsaEncrypt(CipherTest.java:33)
    at CipherTest.main(CipherTest.java:40)

 

RSA是一种对称加密算法,但加密时出现这个错误的原因,是因为使用了私钥进行加密.

正常应该使用公钥进行加密,然后通过私钥进行解密.

代码:

 KeyPair keypair = KeyPairGenerator.getInstance("RSA").generateKeyPair();
        String str = "hello world";
        Cipher cipher = Cipher.getInstance("RSA");

        cipher.init(Cipher.PUBLIC_KEY, keypair.getPublic());
        byte[] buffer = cipher.doFinal(str.getBytes());

        cipher.init(Cipher.PRIVATE_KEY, keypair.getPrivate());
        System.out.println(new String(cipher.doFinal(buffer)));

分享到:
评论
2 楼 ftp2010 2011-04-18  
我用java'的库也验证过,用public key解密private key 加密的数据,也是可以的
我想这个exception还是和padding有关
并不是楼主指出的原因
1 楼 ftp2010 2011-04-18  
这个说法正确吗?
RSA 算法的公钥和私鈅是对称的啊
私鈅加密的公钥能解,公钥加密的私鈅能解
这个我在python程序里也验证过的,java的库有特殊规定吗》?

相关推荐

    兼容IE浏览器的前端RSA加密js

    用于兼容IE浏览器使用RSA加密的工具类,直接引入,并且使用new ecrypt()即可使用,官网的js会倒是IE浏览器报错SCRIPT1010错误,原因为逗号(,)关键字(default,delete)等。

    兼容JS和C#的RSA加密解密实例

    RSA加密解密是一种广泛应用于网络安全中的非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman三位科学家在1977年提出,因此得名RSA。这种算法基于大数因子分解的困难性,为数据提供了一种安全的加密方式,...

    前端使用jsencrypt进行RSA加密解密(uniapp也可用)

    由于项目需求,需要对一些重要信息进行RSA加密再传给服务器,网上找了挺久相关内容,终于解决,总结一下。 前端使用jsencrypt进行RSA加密解密(uniapp也可用) 一、引入jsencrypt.js文件 jsencrypt.js下载:...

    RSA解密RSA解密

    RSA算法是一种非对称加密算法,它是现代密码学的基石之一,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年共同提出,因此得名RSA。这种算法基于大数因子分解的困难性,使得只有拥有特定密钥的人才能对数据进行...

    Java 生成RSA密钥进行数据加密解密 支持超长字符分区

    RSA是一种非对称加密算法,它基于两个不同的密钥:公钥和私钥。公钥用于加密,而私钥用于解密。这种机制使得只有持有私钥的一方才能解密由公钥加密的数据,从而确保数据的安全性。 首先,要生成RSA密钥对,可以使用...

    iOS加密解密之rsa完整代码

    RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,广泛应用于数据加密和数字签名中。本篇文章将详细介绍如何在iOS中实现RSA加密和解密,以及提供的代码资源。 首先,理解RSA的基本原理。RSA是一种公钥加密技术,...

    基于JAVA的RSA文件加密软件的设计与实现毕业设计(源代码+论文)

    【作品名称】:基于JAVA的RSA文件加密软件的设计与实现【毕业设计】(源代码+论文) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 ...

    前端使用jsencrypt加密后端使用java RSA解密功能实现源码

    首先,RSA是一种非对称加密算法,基于两个密钥:公钥和私钥。公钥用于加密数据,而私钥用于解密。这种方式保证了即使数据在传输过程中被截取,没有私钥的攻击者也无法解密信息,从而确保了数据的安全性。 `...

    RSA加密JAVA实现+sun.misc.BASE64Decoder.jar

    RSA算法是一种非对称加密算法,它在信息安全领域有着广泛的应用,特别是在数据传输的安全性上。这个Java实现的示例提供了RSA加密和解密的功能,并且结合了`sun.misc.BASE64Decoder.jar`来处理Base64编码,使得加密后...

    uniapp 前后端AES加密解密.rar

    此外,为了避免密钥泄露,可以使用非对称加密(如RSA)来安全地交换对称密钥。 总的来说,这个压缩包提供的解决方案可以帮助开发者在uniapp小程序中实现前后端AES加密解密,确保数据在传输过程中的安全性。这不仅...

    C# IKVM 生成 java AES 密钥并加解密

    此外,还应考虑密钥管理和安全传输的问题,例如使用密钥派生函数(KDF)和安全哈希算法(SHA)生成共享密钥,或者使用非对称加密算法(如RSA)来交换AES密钥。 总之,"C# IKVM 生成 java AES 密钥并加解密"涉及了跨...

    JavaScript的加密算法类库:crypto-js

    1. **AES(高级加密标准)**:这是目前最广泛使用的对称加密算法,速度快且安全性高。Crypto-js支持AES的CBC(密码块链接)、ECB(电子密码本)和CFB(密文反馈)等多种工作模式。 2. **DES(数据加密标准)**:...

    java实现的简易版网络聊天加密通信程序

    3. 为防止中间人攻击,采用RSA非对称加密算法协助DH算法完成密钥交换。具体过程如下: a. 接收者与发送者双方各自利用RSA算法生成自己的公私钥,并生成数字证书,并在一个CA进行认证。 b. 在DH密钥交换阶段,A生成A...

    java加密阅读器

    我自己编写的java加密阅读器,支持自选密钥加密文件,使用RSA非对称加密。文件的公钥与私钥和软件启动密码的公钥私钥可不同,但要记住哪个文件用了哪个密钥,否则会报错,第一次使用请用密钥生成器生成密钥,在操作。...

    小程序加密jsencrypt.js.rar

    需要注意的是,RSA加密的效率相对较低,不适用于大量数据的加密,通常只用于对少量敏感数据或者对称加密的密钥进行加密。微信小程序还支持其他加密方式,如AES,可以用于加密较大体积的数据。在实际应用中,可以结合...

    PHP使用OpenSSL进行RSA签名和验证的一些资料

    RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,它基于大数因子分解的困难性。该算法包括一对密钥,即公钥和私钥。公钥可以公开,用于加密数据或验证签名;私钥则必须保密,用于解密数据或创建签名。 在PHP中...

    crypto-js-4.0.0.tar.gz

    - **广泛的加密算法支持**:crypto-js不仅包含了AES、DES、TripleDES等对称加密算法,还支持RSA、ECC等非对称加密算法,以及MD5、SHA1、SHA256等哈希函数。 - **易于使用**:通过简单的API调用,开发者可以轻松...

    myEncrypt.js

    RSA加密和解密长字符串,解决传统RSA加密和解密过长的字符串报错问题(js版本)

    RSAUtil.java

    RSA加密和解密长字符串,解决传统RSA加密和解密过长的字符串报错问题(java)

    pycrypto-2.6.1-cp39-cp39-win_amd64.zip

    2. **非对称加密**:PyCrypto也提供了RSA、DSA(数字签名算法)等非对称加密算法。非对称加密使用一对公钥和私钥,其中公钥可公开,用于加密;私钥需保密,用于解密,这在安全通信中尤为重要。 3. **哈希函数**:...

Global site tag (gtag.js) - Google Analytics