公钥和私钥是经过base64编码的字符串。
使用默认的填充方式,已做分段加密 解决 明文或者密文长度太长的问题
出现的问题
java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException : algid p
arse error, not a sequence
缺少RSA秘钥提供商BC,即BouncyCastleProvider
可以在mvn网站下载https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk16
在代码中,
// static {
// Security.addProvider(new BouncyCastleProvider());
// }
完整代码附上:
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Security;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.KeySpec;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RsaEncrypter {
private static Logger mLogger = LoggerFactory.g

在Java 1.8环境下,使用RSA加密和解密时,如果公钥和私钥是Base64编码的字符串,可能会遇到由于明文或密文过长导致的加密问题。解决这个问题通常采用分段加密。文章指出在执行过程中遇到了'algid parse error, not a sequence'异常,这是由于缺少RSA密钥提供者BC(BouncyCastleProvider)。为解决此问题,可以通过引入BouncyCastleProvider,具体做法是在代码中添加安全提供者。文章提供了完整的代码示例。"
119142803,9929661,共振现象对机床加工精度的影响分析,"['机械工程', '制造工艺', '精密加工', '物理现象', '设备维护']
最低0.47元/天 解锁文章
8958

被折叠的 条评论
为什么被折叠?



