Encryption JSEncrypt在客户端加密,在服务器解密

Encryption JSEncrypt在客户端加密,在服务器解密,encryption,certificate,javascript,Encryption,Certificate,Javascript,我使用JSEncrypt在客户机上加密用户的密码,并发送到服务器进行解密。 我从服务器获取公钥,并使用Javascript在客户端上构建RSA密钥: var leafCert = new X509(); leafCert.readCertPEM(publicCertificate); 在我的加密方法中 var encryptKey = new JSEncrypt(); var encryptedValue = serverPublicKey.encrypt(inputStr) return S

我使用JSEncrypt在客户机上加密用户的密码,并发送到服务器进行解密。 我从服务器获取公钥,并使用Javascript在客户端上构建RSA密钥:

var leafCert = new X509();
leafCert.readCertPEM(publicCertificate);
在我的加密方法中

var encryptKey = new JSEncrypt();
var encryptedValue = serverPublicKey.encrypt(inputStr)
return String(inputStr)
在服务器上,当我解密时,我看到垃圾消息。我的服务器端代码:

public String decryptString(String encryptedVal, String sessionId)
{

    String sResult="";
    try
    {

        PrivateKey pvtKey = getPrivateKeyFromSession(sessionId);
        Cipher pkCipher=null;

        pkCipher = Cipher.getInstance("RSA/None/NoPadding", "BC");
        pkCipher.init(Cipher.DECRYPT_MODE, pvtKey);
        Base64 encoder = Base64.getInstance();          
        byte[] decodedValue = encoder.decode(encryptedVal);
        byte[] deCryptedBytes =pkCipher.doFinal( decodedValue );
        sResult = new String(deCryptedBytes);
    }           
    catch(Exception ex){log.error("Error decryptString" + ex.getMessage()); }
    return sResult.trim();
}

你能告诉我哪里出了问题吗。我在服务器上看不到实际解密的消息。

您在服务器端使用什么API进行解密?根据以上代码,您永远不会使用
encryptKey
。在服务器代码中,在执行“pkCipher.doFinal()”之前是否需要执行pkCipher.decrypt()?请参阅我的问题中要解密的服务器端代码。我的问题中提到的加密API作为java脚本方法的一部分出现在我的客户机代码中。我无法更改服务器端实现,因为它被其他各种客户端应用程序使用。但是我可以修改java脚本代码以进行加密。谢谢您的帮助。好的,您仍然没有解决加密期间未使用
encryptKey
的问题。你能发布一个更完整的客户端代码吗?谢谢,我已经修改了我的客户端代码,用公钥加密为:var rsa=new RSAKey();setPublic(serverPublicKey.n,serverPublicKey.e);var encryptedValue=rsa.encrypt(inputStr);返回encryptedValue;但仍然无法在服务器端解密。我猜RSA的加密方法默认考虑填充。