Java JSON数据加密/解密或密钥-值对

Java JSON数据加密/解密或密钥-值对,java,javascript,ajax,json,encryption,Java,Javascript,Ajax,Json,Encryption,我正在以以下格式将客户端数据发布到服务器 $.ajax({ type: 'post', url: 'rest/server', data: JSON.stringify(frmData), contentType: "application/json; charset=utf-8", success: function (data) { ... } }); 在发送到服务器(java)时,加密/解密或生成密钥-值对的最佳选项是什么,

我正在以以下格式将客户端数据发布到服务器

$.ajax({
    type: 'post',
    url: 'rest/server',
    data: JSON.stringify(frmData),
    contentType: "application/json; charset=utf-8",
    success: function (data) {
        ...
    }
});
在发送到服务器(java)时,加密/解密或生成密钥-值对的最佳选项是什么,以及如何避免发布不应发送的数据?例如,若表单元素包含属于用户的值,则该用户可以将其他值发送到服务器进行发布


HTTPS/SSL暂时不是我的选择。

Herr K收集了一些JavaScript加密方法。没有最佳方案,您需要根据与Java的互操作性选择一个,但可能会使用RSA提供与Java匹配的功能,并使用适当的填充方案。在我看来,这只能防止无法操纵请求的被动“攻击者”

因此,您可以使用选择的方法生成公钥/私钥对,并将公钥嵌入到客户机代码中。然后在客户端使用公钥加密,在服务器上使用私钥解密

您需要将contentType设置为
text/plain

要从服务器接收加密响应,这应该扩展一点。由于需要像RSA这样的非对称密码,客户机只有一个公钥,服务器只有一个私钥,因此服务器只能使用RSA对消息进行签名,而不能对其进行加密。因此,客户端将需要生成一个AES密钥并将其发送到服务器,服务器将使用该密钥安全响应。所谓安全,我的意思是,信息将是保密的,但可能不是真实的。因此,应该添加某种类型的MAC


为了进一步扩展,客户机在第一条消息上生成AES密钥,并使用该密钥加密实际消息,另外使用RSA加密AES密钥(这称为混合加密)。服务器响应使用AES加密的消息。对于会话的其余部分,仅使用AES。RSA仅在会话开始时用于建立会话密钥。这是手工制作的SSL,不使用浏览器的SSL功能。

Herr K收集了一些JavaScript加密方法。没有最佳方案,您需要根据与Java的互操作性选择一个,但可能会使用RSA提供与Java匹配的功能,并使用适当的填充方案。在我看来,这只能防止无法操纵请求的被动“攻击者”

因此,您可以使用选择的方法生成公钥/私钥对,并将公钥嵌入到客户机代码中。然后在客户端使用公钥加密,在服务器上使用私钥解密

您需要将contentType设置为
text/plain

要从服务器接收加密响应,这应该扩展一点。由于需要像RSA这样的非对称密码,客户机只有一个公钥,服务器只有一个私钥,因此服务器只能使用RSA对消息进行签名,而不能对其进行加密。因此,客户端将需要生成一个AES密钥并将其发送到服务器,服务器将使用该密钥安全响应。所谓安全,我的意思是,信息将是保密的,但可能不是真实的。因此,应该添加某种类型的MAC


为了进一步扩展,客户机在第一条消息上生成AES密钥,并使用该密钥加密实际消息,另外使用RSA加密AES密钥(这称为混合加密)。服务器响应使用AES加密的消息。对于会话的其余部分,仅使用AES。RSA仅在会话开始时用于建立会话密钥。这是手工制作的SSL,不使用浏览器的SSL功能。

Herr K收集了一些JavaScript加密方法。没有最佳方案,您需要根据与Java的互操作性选择一个,但可能会使用RSA提供与Java匹配的功能,并使用适当的填充方案。在我看来,这只能防止无法操纵请求的被动“攻击者”

因此,您可以使用选择的方法生成公钥/私钥对,并将公钥嵌入到客户机代码中。然后在客户端使用公钥加密,在服务器上使用私钥解密

您需要将contentType设置为
text/plain

要从服务器接收加密响应,这应该扩展一点。由于需要像RSA这样的非对称密码,客户机只有一个公钥,服务器只有一个私钥,因此服务器只能使用RSA对消息进行签名,而不能对其进行加密。因此,客户端将需要生成一个AES密钥并将其发送到服务器,服务器将使用该密钥安全响应。所谓安全,我的意思是,信息将是保密的,但可能不是真实的。因此,应该添加某种类型的MAC


为了进一步扩展,客户机在第一条消息上生成AES密钥,并使用该密钥加密实际消息,另外使用RSA加密AES密钥(这称为混合加密)。服务器响应使用AES加密的消息。对于会话的其余部分,仅使用AES。RSA仅在会话开始时用于建立会话密钥。这是手工制作的SSL,不使用浏览器的SSL功能。

Herr K收集了一些JavaScript加密方法。没有最佳方案,您需要根据与Java的互操作性选择一个,但可能会使用RSA提供与Java匹配的功能,并使用适当的填充方案。在我看来,这只能防止无法操纵请求的被动“攻击者”

因此,您可以使用选择的方法生成公钥/私钥对,并将公钥嵌入到客户机代码中。然后在客户端使用公钥加密,在服务器上使用私钥解密

您需要将contentType设置为
text/plain