Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在RSA加密上遇到InvalidKeyException_Java_Rsa - Fatal编程技术网

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”中的字节格式不正确。