js中常见的数据加密与解密的方法

JavaScript018

js中常见的数据加密与解密的方法,第1张

加密在我们前端的开发中也是经常遇见的。本文只把我们常用的加密方法进行总结。不去纠结加密的具体实现方式(密码学,太庞大了)。

常见的加密算法基本分为这几类,

RSA加密:RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。(这才是正经的加密算法)

非对称加密算法:非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法

DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。

AES这个标准用来替代原先的DES

DES/AES我们合并在一起介绍其用法和特点

Base64是一种用64个字符来表示任意二进制数据的方法。base64是一种编码方式而不是加密算法。只是看上去像是加密而已(吓唬人)。

1、base64加密:在页面中引入base64.js文件,调用方法为:

2、md5加密:在页面中引用md5.js文件,调用方法为

3、sha1加密,据说这是最安全的加密:页面中引入sha1.js,调用方法为

base64.js: http://files.cnblogs.com/mofish/base64.js

md5.js: http://files.cnblogs.com/mofish/md5.js

sha1.js: http://files.cnblogs.com/mofish/sha1.js

我们可以知道:escape()除了 ASCII 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL编码,最好不要使用此方法。而encodeURI() 用于编码整个URI,因为URI中的合法字符都不会被编码转换。encodeURIComponent方法在编码单个URIComponent(指请求参数)应当是最常用的,它可以讲参数中的中文、特殊字符进行转义,而不会影响整个URL。

请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。

一、encodeURI()//转义一个URI中的字符

语法:encodeURI(uri)//这个在编码不同的AJAX请求时,解决中文乱码问题经常用到。

二、decodeURI()//解码一个URI中的字符

语法:decodeURI(uri)

三、encodeURIComponent()//转义URI组件中的字符

四、decodeURIComponent()//解码一个URI组件中的字符

五、escape()//编码一个字符串

语法:escape(value)

六、unecape()//解码一个由escape()函数编码的字符串

加密和解密原则上都应该在后台完成才合乎常理,如果在前端加密,就好比在众目睽睽之下化妆易容,然后声称自己是另一个人一样,没意义啊。

如果一定要在前端加密,可以这样:

<input type="submit" name="submit" value="注册" onclick="var pwd=document.getElementsByName('password')[0]pwd.value=md5(pwd.value)"/>