如何判断一个字符串是不是经过base64加密过

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何判断一个字符串是不是经过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给整除。


总结

        一般情况下,一个合法的Base64,有着以下特征:

    字符串的长度为4的整数倍。

    字符串的符号取值只能在A-Z, a-z, 0-9, +, /, =共计65个字符中,且=如果出现就必须在结尾出现。

参考技术A 1.标准base64只有64个字符(英文大小写、数字和+、/)以及用作后缀等号;
2.base64是把3个字节变成4个可打印字符,所以base64编码后的字符串一定能被4整除(不算用作后缀的等号);
3.等号一定用作后缀,且数目一定是0个、1个或2个。这是因为如果原文长度不能被3整除,base64要在后面添加\0凑齐3n位。为了正确还原,添加了几个\0就加上几个等号。显然添加等号的数目只能是0、1或2;
4.严格来说base64不能算是一种加密,只能说是编码转换。使用base64的初衷。是为了方便把含有不可见字符串的信息用可见字符串表示出来,以便复制粘贴;
参考技术B 应该是可以加的!

判断一个字符串是否进行了base64加密

 

通过长度以及base64加密方法(从base64组成入手)

 

/**
* 判断是否进行base64加密
* @param str
* @return
*/
public static boolean checkBase64(String str){
if(str.length()%4!=0){
return false;
}
char[] charArray = str.toCharArray();
for (int i = 0; i < charArray.length; i++) {
if(charArray[i]>=‘A‘ && charArray[i]<=‘Z‘){
continue;
}
if(charArray[i]>=‘a‘ && charArray[i]<=‘z‘){
continue;
}
if(charArray[i]>=‘0‘ && charArray[i]<=‘9‘){
continue;
}
if(charArray[i]==‘+‘ || charArray[i]==‘\\‘ || charArray[i]==‘=‘){
continue;
}
return false;
}
return true;
}

以上是关于如何判断一个字符串是不是经过base64加密过的主要内容,如果未能解决你的问题,请参考以下文章

判断一个字符串是否进行了base64加密

如何判断字符串所用何种加密编码

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

字符串base64加密解密

base64加密比原来的数据长度增加多少

通过php base64函数进行加密解密