Java 在RSA加密上遇到InvalidKeyException
我在尝试使用公钥加密时遇到上述异常Java 在RSA加密上遇到InvalidKeyException,java,rsa,Java,Rsa,我在尝试使用公钥加密时遇到上述异常 java.security.InvalidKeyException: IOException: DerInputStream.getLength(): lengthTag=111, too big 代码如下: public static String encryptWithMyPubKey (String text) throws Exception { if (myPubKey == null) { URL
java.security.InvalidKeyException: IOException: DerInputStream.getLength(): lengthTag=111, too big
代码如下:
public static String encryptWithMyPubKey (String text) throws Exception {
if (myPubKey == null) {
URL path = RSAUtils.class.getResource("pub.der");
System.out.println("Path to private key file" + path.getFile());
File f = new File(path.getFile());
FileInputStream fis = new FileInputStream(f);
DataInputStream dis = new DataInputStream(fis);
byte[] keyBytes = new byte[(int)f.length()];
dis.readFully(keyBytes);
dis.close();
KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(keyBytes));
}
}
这是什么意思?我已经解决了这个问题。这是由于der二进制文件的格式错误造成的。Maven build在将.der文件从资源文件夹复制到类路径时对其应用了过滤器。为了保留文件,您需要通过如下更改pom.xml来排除.der文件(或任何二进制文件):
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources</id>
<!-- here the phase you need -->
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${webappDirectory}/WEB-INF/classes</outputDirectory>
<resources>
<resource>
<directory>src/main/java</directory>
<filtering>true</filtering>
<excludes>
<exclude>**/*.der</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/java</directory>
<filtering>false</filtering>
<includes>
<include>**/*.der</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
maven资源插件
2.6
复制资源
验证
复制资源
${webappDirectory}/WEB-INF/classes
src/main/java
真的
**/*德先生
src/main/java
假的
**/*德先生
我已经解决了这个问题。这是由于der二进制文件的格式错误造成的。Maven build在将.der文件从资源文件夹复制到类路径时对其应用了过滤器。为了保留文件,您需要通过如下更改pom.xml来排除.der文件(或任何二进制文件):
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources</id>
<!-- here the phase you need -->
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${webappDirectory}/WEB-INF/classes</outputDirectory>
<resources>
<resource>
<directory>src/main/java</directory>
<filtering>true</filtering>
<excludes>
<exclude>**/*.der</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/java</directory>
<filtering>false</filtering>
<includes>
<include>**/*.der</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
maven资源插件
2.6
复制资源
验证
复制资源
${webappDirectory}/WEB-INF/classes
src/main/java
真的
**/*德先生
src/main/java
假的
**/*德先生
您确实应该将异常堆栈跟踪放入问题正文而不是标题中。这很可能意味着“pub.der”中的字节格式不正确。您确实应该将异常堆栈跟踪放入问题正文而不是标题中。这很可能意味着“pub.der”中的字节格式不正确。