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)));
分享到:
相关推荐
用于兼容IE浏览器使用RSA加密的工具类,直接引入,并且使用new ecrypt()即可使用,官网的js会倒是IE浏览器报错SCRIPT1010错误,原因为逗号(,)关键字(default,delete)等。
RSA加密解密是一种广泛应用于网络安全中的非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman三位科学家在1977年提出,因此得名RSA。这种算法基于大数因子分解的困难性,为数据提供了一种安全的加密方式,...
由于项目需求,需要对一些重要信息进行RSA加密再传给服务器,网上找了挺久相关内容,终于解决,总结一下。 前端使用jsencrypt进行RSA加密解密(uniapp也可用) 一、引入jsencrypt.js文件 jsencrypt.js下载:...
RSA算法是一种非对称加密算法,它是现代密码学的基石之一,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年共同提出,因此得名RSA。这种算法基于大数因子分解的困难性,使得只有拥有特定密钥的人才能对数据进行...
RSA是一种非对称加密算法,它基于两个不同的密钥:公钥和私钥。公钥用于加密,而私钥用于解密。这种机制使得只有持有私钥的一方才能解密由公钥加密的数据,从而确保数据的安全性。 首先,要生成RSA密钥对,可以使用...
RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,广泛应用于数据加密和数字签名中。本篇文章将详细介绍如何在iOS中实现RSA加密和解密,以及提供的代码资源。 首先,理解RSA的基本原理。RSA是一种公钥加密技术,...
【作品名称】:基于JAVA的RSA文件加密软件的设计与实现【毕业设计】(源代码+论文) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 ...
首先,RSA是一种非对称加密算法,基于两个密钥:公钥和私钥。公钥用于加密数据,而私钥用于解密。这种方式保证了即使数据在传输过程中被截取,没有私钥的攻击者也无法解密信息,从而确保了数据的安全性。 `...
RSA算法是一种非对称加密算法,它在信息安全领域有着广泛的应用,特别是在数据传输的安全性上。这个Java实现的示例提供了RSA加密和解密的功能,并且结合了`sun.misc.BASE64Decoder.jar`来处理Base64编码,使得加密后...
此外,为了避免密钥泄露,可以使用非对称加密(如RSA)来安全地交换对称密钥。 总的来说,这个压缩包提供的解决方案可以帮助开发者在uniapp小程序中实现前后端AES加密解密,确保数据在传输过程中的安全性。这不仅...
此外,还应考虑密钥管理和安全传输的问题,例如使用密钥派生函数(KDF)和安全哈希算法(SHA)生成共享密钥,或者使用非对称加密算法(如RSA)来交换AES密钥。 总之,"C# IKVM 生成 java AES 密钥并加解密"涉及了跨...
1. **AES(高级加密标准)**:这是目前最广泛使用的对称加密算法,速度快且安全性高。Crypto-js支持AES的CBC(密码块链接)、ECB(电子密码本)和CFB(密文反馈)等多种工作模式。 2. **DES(数据加密标准)**:...
3. 为防止中间人攻击,采用RSA非对称加密算法协助DH算法完成密钥交换。具体过程如下: a. 接收者与发送者双方各自利用RSA算法生成自己的公私钥,并生成数字证书,并在一个CA进行认证。 b. 在DH密钥交换阶段,A生成A...
我自己编写的java加密阅读器,支持自选密钥加密文件,使用RSA非对称加密。文件的公钥与私钥和软件启动密码的公钥私钥可不同,但要记住哪个文件用了哪个密钥,否则会报错,第一次使用请用密钥生成器生成密钥,在操作。...
需要注意的是,RSA加密的效率相对较低,不适用于大量数据的加密,通常只用于对少量敏感数据或者对称加密的密钥进行加密。微信小程序还支持其他加密方式,如AES,可以用于加密较大体积的数据。在实际应用中,可以结合...
RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,它基于大数因子分解的困难性。该算法包括一对密钥,即公钥和私钥。公钥可以公开,用于加密数据或验证签名;私钥则必须保密,用于解密数据或创建签名。 在PHP中...
- **广泛的加密算法支持**:crypto-js不仅包含了AES、DES、TripleDES等对称加密算法,还支持RSA、ECC等非对称加密算法,以及MD5、SHA1、SHA256等哈希函数。 - **易于使用**:通过简单的API调用,开发者可以轻松...
RSA加密和解密长字符串,解决传统RSA加密和解密过长的字符串报错问题(js版本)
RSA加密和解密长字符串,解决传统RSA加密和解密过长的字符串报错问题(java)
2. **非对称加密**:PyCrypto也提供了RSA、DSA(数字签名算法)等非对称加密算法。非对称加密使用一对公钥和私钥,其中公钥可公开,用于加密;私钥需保密,用于解密,这在安全通信中尤为重要。 3. **哈希函数**:...