base64 不能加密哪些字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了base64 不能加密哪些字符串相关的知识,希望对你有一定的参考价值。
参考技术A base64加密的结果还是字符串吗首先,Base64算不上是一种加密算法。
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,它的目的是用ASCII中定义的可见字符去表示任意的二进制数据。之所以要这样做,是因为计算机中很多数据是只能通过可见字符去传输的(比如我们的网站网址,比如一些面向字符的网络协议如SMTP等),但是这些情景有时由需要去传输二进制数据。基于这样的需要,诞生了Base64.
简单来讲,Base64就是用下列总计64个字符:
A-Z
a-z
0-9
+
/
去表示二进制数据。二进制数据以字节为组,一个字节8bit存在256个状态,而一个Base64字符只有64个状态。机智的人们于是规定,用每4个Base64字符去表示3个二进制字节,因为:
64 * 64 * 64 * 64 = 256 * 256 * 256
因此,Base64字符串的长度必然是4的整数倍。此外,由于二进制的字节数不一定是3的整数倍,所以Base64字符串在结尾是可能有空的。这些空的状态,Base64引入第65个字符去表示:
=
这也是为什么Base64很多都是以=或==结尾的。但是注意,也存在不以=或==结尾的Base64,只要编码的二进制字节数恰好被3给整除。本回答被提问者和网友采纳
js中字符串的加密base64
base64编码主要用在传输,存储表示二进制的领域,还可以进行加密和解密。其实就是字符串的编码和解码
btoa与atob
只能加密ascii,不能加密汉字。
var str = ‘I LOVE YOU‘; //加密btoa var jiaMi = btoa(str); alert(jiaMi) ; //结果为SSBMT1ZFIFlPVQ== //加密 atob var jieMi = atob(jiaMi); alert(jieMi)
encodeURIComponent与decodeURIcomponent
只能将中文加密,不可以加密ascii
加密时 可以先将中文加密,然后再用btoa加密
解密时可以先将ascii解密,然后再将非ascii解密
var str = ‘i love中国‘; //加密encodeURIcomponent var jiaMi = encodeURIComponent(str); alert(jiaMi) ; //结果为i%20love%E4%B8%AD%E5%9B%BD ,你会发现英文字母没有加密 var jiaM = btoa(jiaMi); alert(jiaM) ; //结果为aSUyMGxvdmUlRTQlQjglQUQlRTUlOUIlQkQ= //解密,先用atob解密ascii码,然后再用decodeURIComponent var jieMi = atob(jiaM); var jieM = decodeURIComponent(jieMi); alert(jieM)
以上是关于base64 不能加密哪些字符串的主要内容,如果未能解决你的问题,请参考以下文章