一个简单的验证字符串是否为Base64编码的方法

简介:

一个简单的验证字符串是否为Base64编码的方法

Base64 encode 说明

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

def is_base64_code(s):
    '''Check s is Base64.b64encode'''
    if not isinstance(s ,str) or not s:
        raise ValueError, "params s not string or None"

    _base64_code = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
                    'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
                    'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a',
                    'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
                    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
                    't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1',
                    '2', '3', '4','5', '6', '7', '8', '9', '+',
                    '/', '=' ]

    # Check base64 OR codeCheck % 4
    code_fail = [ i for i in s if i not in _base64_code]
    if code_fail or len(s) % 4 != 0:
        return False
    return True

验证一下

#   ~ echo "wuyiyi" | base64
# d3V5aXlpCg==
print is_base64_code("d3V5aXlpCg==")




本文转自 煮酒品茶 51CTO博客,原文链接:http://blog.51cto.com/cwtea/2052815,如需转载请自行联系原作者
目录
相关文章
|
关系型数据库 MySQL 数据库
MySQL新增字段报错:ERROR 1118 -- Row size too large. The maximum row size for the used table type
MySQL新增字段报错:ERROR 1118 -- Row size too large. The maximum row size for the used table type
2699 0
|
6月前
|
安全 开发者 CDN
元旦快闪 | 每成功邀请1人,得3个ESA免费版额度,限时加码邀你共迎新年!
阿里云ESA元旦限时活动开启!邀请好友成功试用【ESA基础版】,奖励300%加码,每邀1人得3个免费版额度(原1个),数量无上限。活动时间:2025年12月31日16:00至2026年1月4日16:00。立即参与,助力网站高速访问,共享加速未来!
|
缓存 关系型数据库 MySQL
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
1186 0
|
机器学习/深度学习 人工智能 自然语言处理
关于LLM-as-a-judge范式,终于有综述讲明白了
《From Generation to Judgment: Opportunities and Challenges of LLM-as-a-judge》探讨了大型语言模型(LLM)在评估和判断任务中的应用。传统方法存在不足,而LLM凭借强大的语言理解和生成能力,展现了广阔的应用前景。论文从输入输出角度定义LLM-as-a-judge,提出三维度分类体系,并汇编评估基准,指出关键挑战如偏见、可解释性和对抗性攻击,展望未来改进方向,强调其潜力与价值。论文链接:https://arxiv.org/abs/2411.16594
1092 1
|
人工智能 自然语言处理 监控
《AI赋能共享经济:资源配置与服务质量的双重优化》
共享经济借助互联网平台实现闲置资源高效利用,AI技术的融入进一步优化资源配置和服务质量。AI通过精准需求预测、智能调度和动态分配策略提升资源使用效率;借助个性化推荐、智能客服和实时监控改善用户体验。典型案例如Airbnb和滴滴出行展示了AI在提高预订率、减少等待时间和提升安全方面的显著成效。尽管面临数据隐私等挑战,AI仍为共享经济带来巨大创新和发展机遇。
763 18
|
JavaScript 前端开发 安全
js逆向实战之烯牛数据请求参数加密和返回数据解密
【9月更文挑战第20天】在JavaScript逆向工程中,处理烯牛数据的请求参数加密和返回数据解密颇具挑战。本文详细分析了这一过程,包括网络请求监测、代码分析、加密算法推测及解密逻辑研究,并提供了实战步骤,如确定加密入口点、逆向分析算法及模拟加密解密过程。此外,还强调了法律合规性和安全性的重要性,帮助读者合法且安全地进行逆向工程。
584 11
|
前端开发 容器
css 【详解】—— 图片底部留有间隙(含解决方案)
css 【详解】—— 图片底部留有间隙(含解决方案)
442 0
|
存储 缓存 监控
JVM中G1垃圾收集器:原理、过程和参数配置深入解析
JVM中G1垃圾收集器:原理、过程和参数配置深入解析
|
边缘计算 开发工具 UED
互联网新半场的流量生态——阿里云定向免流方案
当你正在游戏中肆意厮杀时,在你跟美女主播互动畅聊时,突然收到这样一条短信,你会不会心头一紧呢?80%的调查反馈显示,是的(个别土豪除外)。毕竟5块钱30M流量就能用一个月的时代已经过去了,我们玩的游戏也从XX玛丽、贪吃X等单机弱联网游戏过渡到了吃量狂魔的MMO、MOBA等大型网游之中。
9543 0
|
JavaScript
vue中高精度小数问题(加减乘除方法封装)处理
vue中高精度小数问题(加减乘除方法封装)处理
759 0