java jcryption_Javascript端加密java服务端解密

Javascript端加密java服务端解密

通常我们会通过htts来保证传输安全,但如果我们不用https,如何通过javascript来保证浏览器端发送的参数进行加密,并且通过RSA算法来处理。

这里我们可以利用jquery的一个加密插件jcryption来处理,可以参考

现在版本是3.0 但是没有java端的实现,下次有时间再研究。现在这个用的是1.1的版本

这个可以在

不过他的服务端有个缺陷我修改了。

接来大致介绍如下:

1.首先服务端有产生publicKey的servlet:

package com.gsh.oauth.auth.servlet;

import java.io.IOException;

import java.security.KeyPair;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

import com.gsh.oauth.auth.util.JCryptionUtil;

/**

*Servlet implementation class EncryptionServlet

*/

public class EncryptionServlet extendsHttpServlet {

privatestatic final long serialVersionUID = 1L;

/**

* Default constructor.

*/

publicEncryptionServlet() {

//TODO Auto-generated constructor stub

}

/**

* @see HttpServlet#service(HttpServletRequestrequest, HttpServletResponse response)

*/

protectedvoid service(HttpServletRequest request,

HttpServletResponseresponse) throws ServletException, IOException {

intKEY_SIZE = 1024;

if(request.getParameter("generateKeypair") != null) {

JCryptionUtiljCryptionUtil = new JCryptionUtil();

KeyPairkeys = null;

//if(request.getSession().getAttribute("keys") == null) { //这里注释掉否则第二次请求会500

keys= jCryptionUtil.generateKeypair(KEY_SIZE);

request.getSession().setAttribute("keys",keys);

//}

StringBufferoutput = new StringBuffer();

Stringe = JCryptionUtil.getPublicKeyExponent(keys);

Stringn = JCryptionUtil.getPublicKeyModulus(keys);

Stringmd = String.valueOf(JCryptionUtil.getMaxDigits(KEY_SIZE));

output.append("{\"e\":\"");

output.append(e);

output.append("\",\"n\":\"");

output.append(n);

output.append("\",\"maxdigits\":\"");

output.append(md);

output.append("\"}");

output.toString();

response.getOutputStream().print(

output.toString().replaceAll("\r","").replaceAll("\n", "")

.trim());

}else {

response.getOutputStream().print(String.valueOf(false));

}

}

}

2.Client例子

Login form

content="text/html; charset=utf-8">

type="text/javascript">

src="../js/security/jquery.jcryption-1.1.min.js">

$(document).ready(function() {

var$statusText = $('').hide();

$("#status_container").append($statusText);

$("#lf").jCryption({

getKeysURL:"/gsh/oauth/encryption?generateKeypair=true",

beforeEncryption:function(){

$statusText

.text("Test Code")

.show();

returntrue;

},

encryptionFinished:function(

encryptedString,

objectLength){

$statusText

.text(encryptedString);

returntrue;

}

});

});

method="post">

login
client_id:
redirect_uri:
loginid:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值