怎么判断字符串 是否 base64 编码 如何精确判断一个字符串是否是base64编码过的

\u5982\u4f55\u7cbe\u786e\u5224\u65ad\u4e00\u4e2a\u5b57\u7b26\u4e32\u662f\u5426\u662fbase64\u7f16\u7801\u8fc7\u7684

\u5355\u7eaf\u4ece\u5b57\u7b26\u4e32\u7684\u89d2\u5ea6\uff1a

1.\u5b57\u7b26\u6570\u662f4\u7684\u500d\u6570

2.\u5b57\u7b26\u7684\u8303\u56f4\u662f\u5b9a\u7684(base64\u5b57\u7b26\u8868)

\u8c8c\u4f3c\u5e95\u5c42\u4e5f\u65e0\u6cd5\u5224\u5b9a\u662f\u5426\u4e00\u5b9a\u4e3abase64\u7684\u7f16\u7801\u4e32

\u4e5f\u53ef\u4ee5\u901a\u8fc7\u6b63\u5219\u8868\u8fbe\u5f0f\u5224\u65ad\uff1a
\u6b63\u5219\u8868\u8fbe\u5f0f\uff1a
^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$

\u9996\u5148\uff0cBase64\u7b97\u4e0d\u4e0a\u662f\u4e00\u79cd\u7f16\u7801\u7b97\u6cd5\u3002
Base64\u662f\u7f51\u7edc\u4e0a\u6700\u5e38\u89c1\u7684\u7528\u4e8e\u4f20\u8f938Bit\u5b57\u8282\u4ee3\u7801\u7684\u7f16\u7801\u65b9\u5f0f\u4e4b\u4e00\uff0c\u5b83\u7684\u76ee\u7684\u662f\u7528ASCII\u4e2d\u5b9a\u4e49\u7684\u53ef\u89c1\u5b57\u7b26\u53bb\u8868\u793a\u4efb\u610f\u7684\u4e8c\u8fdb\u5236\u6570\u636e\u3002\u4e4b\u6240\u4ee5\u8981\u8fd9\u6837\u505a\uff0c\u662f\u56e0\u4e3a\u8ba1\u7b97\u673a\u4e2d\u5f88\u591a\u6570\u636e\u662f\u53ea\u80fd\u901a\u8fc7\u53ef\u89c1\u5b57\u7b26\u53bb\u4f20\u8f93\u7684\uff08\u6bd4\u5982\u6211\u4eec\u7684\u7f51\u7ad9\u7f51\u5740\uff0c\u6bd4\u5982\u4e00\u4e9b\u9762\u5411\u5b57\u7b26\u7684\u7f51\u7edc\u534f\u8bae\u5982SMTP\u7b49\uff09\uff0c\u4f46\u662f\u8fd9\u4e9b\u60c5\u666f\u6709\u65f6\u7531\u9700\u8981\u53bb\u4f20\u8f93\u4e8c\u8fdb\u5236\u6570\u636e\u3002\u57fa\u4e8e\u8fd9\u6837\u7684\u9700\u8981\uff0c\u8bde\u751f\u4e86Base64.
\u7b80\u5355\u6765\u8bb2\uff0cBase64\u5c31\u662f\u7528\u4e0b\u5217\u603b\u8ba164\u4e2a\u5b57\u7b26\uff1a
A-Z
a-z
0-9
+
/
\u53bb\u8868\u793a\u4e8c\u8fdb\u5236\u6570\u636e\u3002\u4e8c\u8fdb\u5236\u6570\u636e\u4ee5\u5b57\u8282\u4e3a\u7ec4\uff0c\u4e00\u4e2a\u5b57\u82828bit\u5b58\u5728256\u4e2a\u72b6\u6001\uff0c\u800c\u4e00\u4e2aBase64\u5b57\u7b26\u53ea\u670964\u4e2a\u72b6\u6001\u3002\u673a\u667a\u7684\u4eba\u4eec\u4e8e\u662f\u89c4\u5b9a\uff0c\u7528\u6bcf4\u4e2aBase64\u5b57\u7b26\u53bb\u8868\u793a3\u4e2a\u4e8c\u8fdb\u5236\u5b57\u8282\uff0c\u56e0\u4e3a\uff1a
64 * 64 * 64 * 64 = 256 * 256 * 256
\u56e0\u6b64\uff0cBase64\u5b57\u7b26\u4e32\u7684\u957f\u5ea6\u5fc5\u7136\u662f4\u7684\u6574\u6570\u500d\u3002\u6b64\u5916\uff0c\u7531\u4e8e\u4e8c\u8fdb\u5236\u7684\u5b57\u8282\u6570\u4e0d\u4e00\u5b9a\u662f3\u7684\u6574\u6570\u500d\uff0c\u6240\u4ee5Base64\u5b57\u7b26\u4e32\u5728\u7ed3\u5c3e\u662f\u53ef\u80fd\u6709\u7a7a\u7684\u3002\u8fd9\u4e9b\u7a7a\u7684\u72b6\u6001\uff0cBase64\u5f15\u5165\u7b2c65\u4e2a\u5b57\u7b26\u53bb\u8868\u793a\uff1a
=
\u8fd9\u4e5f\u662f\u4e3a\u4ec0\u4e48Base64\u5f88\u591a\u90fd\u662f\u4ee5=\u6216==\u7ed3\u5c3e\u7684\u3002\u4f46\u662f\u6ce8\u610f\uff0c\u4e5f\u5b58\u5728\u4e0d\u4ee5=\u6216==\u7ed3\u5c3e\u7684Base64\uff0c\u53ea\u8981\u7f16\u7801\u7684\u4e8c\u8fdb\u5236\u5b57\u8282\u6570\u6070\u597d\u88ab3\u7ed9\u6574\u9664\u3002

\u603b\u7ed3

\u4e00\u822c\u60c5\u51b5\u4e0b\uff0c\u4e00\u4e2a\u5408\u6cd5\u7684Base64\uff0c\u6709\u7740\u4ee5\u4e0b\u7279\u5f81\uff1a
\u5b57\u7b26\u4e32\u7684\u957f\u5ea6\u4e3a4\u7684\u6574\u6570\u500d\u3002
\u5b57\u7b26\u4e32\u7684\u7b26\u53f7\u53d6\u503c\u53ea\u80fd\u5728A-Z, a-z, 0-9, +, /, =\u5171\u8ba165\u4e2a\u5b57\u7b26\u4e2d\uff0c\u4e14=\u5982\u679c\u51fa\u73b0\u5c31\u5fc5\u987b\u5728\u7ed3\u5c3e\u51fa\u73b0\u3002

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

扩展阅读:中英文自动翻译器 ... studioふぁん 来钝 ... 手比出c you know i mean ... hive cast 转换成字符串 ... python 判断 字符串 ... sudo bash命令 ... 字符串方法 js ... 字符串 abc 的长度是 ... 字符串提取 截断 存取 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网