如何前台JS进行加密,后台java进行解密?

JavaScript020

如何前台JS进行加密,后台java进行解密?,第1张

很不幸,就以我的知识范围,纯粹的JS无法做到百分百的安全。理由如下:

现在的浏览器端可以直接看到你的JS代码,JS代码都是明文的。尽管你可以压缩,混淆,但是也是加大hack的难度,无法彻底对浏览器不可见。既然你的代码都被看见了,那么Hash,加密都是扯淡了。

对内容加密可以使用HTTPS,这点不假。但是这仅仅能够抵抗抓包工具,但是通过浏览器的开发工具,仍然能够看到你的请求内容,格式。那么就可以按照你的格式伪造请求。我们就可以通过伪造请求修改某社交网站的用户设置。

结论:纯粹JS看起来无法满足你的需求,但是可以使用object标签,自己开发控件进行数据加密,这点事可以的。但是这就超出了JS的范围。并且Object的这个话题太大,我没办法给你展开,你自己研究下吧

!function() {

var x = function(x) { return (x + x).slice(1,3)}

window.encrypt = function (s) {

return function() { return this}()

['\x65\x6e\x63\x6f\x64\x65\x55\x52\x49\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74'](s).replace(/%(..)|([^%])/g, function($0, $1, $2) {

return x($1 || ('0'+$2.charCodeAt(0).toString(16)).slice(-2))

})

}

window.decrypt = function decrypt(s) {

return function() { return this}()

['\x64\x65\x63\x6f\x64\x65\x55\x52\x49\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74'](s.replace(/../g, function($0) {

return '%'+x($0)

}))

}

}()

alert(encrypt('中文032309u'))

alert(decrypt(encrypt('中文032309u')))