Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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 为什么org.jasypt.exceptions.EncryptionOperationNotPossibleException_Java_Servlets_Encryption_Jasypt - Fatal编程技术网

Java 为什么org.jasypt.exceptions.EncryptionOperationNotPossibleException

Java 为什么org.jasypt.exceptions.EncryptionOperationNotPossibleException,java,servlets,encryption,jasypt,Java,Servlets,Encryption,Jasypt,以下是我的Encryptor类方法: public String encrypt(String str){ if(str == null || str.equals("")){ str = ""; } else{ StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); encry

以下是我的Encryptor类方法:

    public String encrypt(String str){ 
        if(str == null || str.equals("")){
            str = "";
        }
        else{
            StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
            encryptor.setPassword(mpCryptoPassword);
            str = encryptor.encrypt(str);
        } 
    return str;
    }
    public String decrypt(String str){
        if(str == null || str.equals("")){
            str = "";
        }
        else{
            StandardPBEStringEncryptor decryptor = new StandardPBEStringEncryptor();
            decryptor.setPassword(mpCryptoPassword);
            str = decryptor.decrypt(str);
        }
    return str;
    }
我正在尝试按以下方式进行加密:

String encryptedToken   = "";
//preparing token email + time
Date now            = new Date();               
String prepareToken = "email="+email+"&tokenTime="+now.getTime();

//encrypt url value
Encryptor enc       = new Encryptor();
encryptedToken      = enc.encrypt(prepareToken);
我解密的方式如下:

Encryptor enc           = new Encryptor();
String decryptedToken   = enc.decrypt(encryptedToken);
然后它的抛出错误:

org.jasypt.exceptions.EncryptionOperationNotPossibleException 在org.jasypt.encryption.pbe.StandardPBEByteEncryptor.decrypt上(StandardPBEByteEncryptor.java:1055) 在org.jasypt.encryption.pbe.StandardPBEStringEncryptor.decrypt上(StandardPBEStringEncryptor.java:725) 位于com.cryptography.Encryptor.decrypt(Encryptor.java:57) 位于com.users.forget.ResetPassword.doGet(ResetPassword.java:72) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 位于filters.charsetFilter.filter.charsetFilter.doFilter(charsetFilter.java:61) 位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) 位于org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) 位于org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 位于org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 运行(Thread.java:744)

更新

我注意到它有时会工作,但在加密字符串中有+符号时不工作,因为它获取+as空格

我发现的问题是加密字符串中有+符号。当我解密时,它从URL中获得+作为空白

encryptedToken = encryptedToken.replaceAll(" ","+");
解决这个问题