很不幸,就以我的知识范围,纯粹的JS无法做到百分百的安全。理由如下:
现在的浏览器端可以直接看到你的JS代码,JS代码都是明文的。尽管你可以压缩,混淆,但是也是加大hack的难度,无法彻底对浏览器不可见。既然你的代码都被看见了,那么Hash,加密都是扯淡了。
对内容加密可以使用HTTPS,这点不假。但是这仅仅能够抵抗抓包工具,但是通过浏览器的开发工具,仍然能够看到你的请求内容,格式。那么就可以按照你的格式伪造请求。我们就可以通过伪造请求修改某社交网站的用户设置。
结论:纯粹JS看起来无法满足你的需求,但是可以使用object标签,自己开发控件进行数据加密,这点事可以的。但是这就超出了JS的范围。并且Object的这个话题太大,我没办法给你展开,你自己研究下吧
数字的话可以使用 Base62 算法,不过这只是表面的转换,因为算法是写在Js里的,稍加分析就能知道怎么去翻转。如果要有效加密的话,可以使用js调用RSA算法进行加密,这样js中只会暴露公钥,可以实现安全的加密。
网上多得很。
<script language="javascript">var str
function showUnico(){
if(document.getElementById("before").value.length >0){
str = escape(document.getElementById("before").value)
document.getElementById("after").value = str
}
else alert("请输入要加密的代码")
}
function showHtml(){
if(document.getElementById("after").value.length >0){
str = unescape(document.getElementById("after").value)
document.getElementById("before").value = str
}
else alert("请输入要解密的代码")
}
function clearBoth(){
document.getElementById("before").value = ""
document.getElementById("after").value = ""
}
</script>
<body>
<center>
<table>
<tr>
<th>加密前</th>
<th>加密后</th>
</tr>
<tr>
<td>
<textarea id="before" style="width: 200pxheight: 174px"></textarea>
</td>
<td>
<textarea id="after" style="width: 200pxheight: 174px"></textarea>
</td>
</tr>
</table>
<br>
<input type="button" value="加密" onclick="showUnico()">
<input type="button" value="解密" onclick="showHtml()">
<input type="button" value="全部清空" onclick="clearBoth()">
</center>
</body>