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 不能加密哪些字符串的主要内容,如果未能解决你的问题,请参考以下文章

base64 加密后可以还原回去,这种加密不就没有安全性可言了?

base64 加密原理 解密原理

开发中常见的加密方式及应用

字符串base64加密解密

iOS加密2——Base64(苹果支持)

base64编解码与hash加密