AES javascript加密和Java解密

AES javascript加密和Java解密,java,javascript,encryption,encoding,cryptography,Java,Javascript,Encryption,Encoding,Cryptography,我已经在javascrypt中实现了RSA加密,在java中实现了RSA解密,这只是一个简单的过程。但问题是我必须加密大量数据,而RSA不可能一次加密大量数据,要么我必须拆分要加密的数据(这将使过程复杂化),要么使用AES对RSA进行加密和解密。所以我选择了使用带RSA加密和解密的AES 下面是我使用Crypto js的javascript代码 <script src="rollups/aes.js"></script> <script src="component

我已经在javascrypt中实现了RSA加密,在java中实现了RSA解密,这只是一个简单的过程。但问题是我必须加密大量数据,而RSA不可能一次加密大量数据,要么我必须拆分要加密的数据(这将使过程复杂化),要么使用AES对RSA进行加密和解密。所以我选择了使用带RSA加密和解密的AES

下面是我使用Crypto js的javascript代码

<script src="rollups/aes.js"></script>
<script src="components/enc-base64-min.js"></script>
<script type="text/javascript" src="rollups/jquery-min.js"></script>
<script type="text/javascript">
    var secretPass = CryptoJS.lib.WordArray.random(16);
    var message = "<username>user</username><password>password</password>";
    var encrypted = CryptoJS.AES.encrypt(message, CryptoJS.enc.Hex.stringify(secretPass));
    var encode = encrypted.ciphertext.toString(CryptoJS.enc.Base64);
    var secretPasses = CryptoJS.enc.Hex.stringify(secretPass);
    console.log('encrypted: ',encrypted);
    console.log('secretPasses: ',secretPasses);
    console.log('encode: ',encode);
    $.ajax({
            url: 'encryption',
            type: 'POST',
            data: {
                encode: encode,
                secretPasses: secretPasses
            },
            success: function(data) {
                console.log('success');
            },
            failure: function(data) {
                console.log('failure');
            }
        });
    </script>
在我发布的servlet方法中,我使用sysout检查接收到的数据是否相同。我得到的密码是一样的,编码数据也是一样的。问题是,在从加密到编码的转换过程中,编码数据在jsp本身中改变了其形式。我试图通过ajax直接传递“encrypted”,但这是一个指向错误,如果我输入“alert(typepof encrypted);”,它会以“Object”的形式发出警报。如何将原始加密数据传递给servlet

System.out.println("secretpasses: "+request.getParameter("secretPasses"));
System.out.println("encode: "+request.getParameter("encode"));
Java输出:

secretpasses: 23f96d28ae9f9c1c8c37050f79acdb37
encode: a7dHG/b4IMxeK7b9O00PATG+jgOy3HWZuoIeB2zbs2DvOFhrJUuOJ94bXly4cjuEd+YRa9V6jsMOY5SxmZAAQw==

如果我能得到一些用Javascript进行AES加密和用Java进行解密的例子,我也会很高兴。我通知说它是带有RSA加密和解密的AES,但它没有插入到当前代码中。如果我可以让AES部分工作,我可以通过加密AES密钥来适当地执行RSA。

您不能直接将
加密的
传递到后端,因为它是一个包含密文和一些本机CryptoJS格式的其他重要数据的对象。如果不做一些工作,用Java表示这个对象是不容易的

但是,您可以通过调用对象上的
toString()
函数从该对象生成字符串。这将为您提供一个可以通过ajax发送的字符串。虽然您当然可以用Java解析这个字符串以获得解密它所需的信息,但是直接将
密文
salt
参数传递到后端可能会更容易

看看如何使用它们进行解密。请注意,
salt
password
不仅派生密钥,还派生IV


另一种可能是通过利用CryptoJS和Java中的PBKDF2来使用更好的密码派生。有关这方面的一些示例,请参见。

那么,到底是什么问题?你不明白为什么会发出警报
Object
?不,它是Object,所以我不能通过ajax数据直接传递该对象-我也试过了。我无法找出在servlet中获得相同加密数据的正确格式。我将尝试PBKDF2,PBKDF2也是我用于加密密码并将其存储在数据库中的算法。
secretpasses: 23f96d28ae9f9c1c8c37050f79acdb37
encode: a7dHG/b4IMxeK7b9O00PATG+jgOy3HWZuoIeB2zbs2DvOFhrJUuOJ94bXly4cjuEd+YRa9V6jsMOY5SxmZAAQw==