使用Python字符串的编码与解码方法实现信息加解密

代码思路很简单,字符串的encode()方法可以将其编码为字节串,在生成的字节串中插入干扰字节后无法正常解码,要想还原信息,必须清楚干扰字节的位置并删除后再使用decode()解码。本文代码重点在于演示字符串方法和内置函数bytes()的用法,加密算法本身并不具有抗攻击性,很容易被破解。

def encrypt(message, k=3): #使用UTF8编码为字节串 m = message.encode() result = [] #切分,3个字节一组 for i in range(0, len(m), k): result.append(m[i:i+k]) #在每组中间插入干扰字节 #不过这样太明显了 #可以改为增加不同的随机字节 return b'\xf5'.join(result)

def decrypt(message, k=3): #把二进制串转换为数字列表 m = list(message) #删除干扰字节 del m[k::k+1] #转换为字节串并解码返回 return bytes(m).decode()

p = '中文测试。This is a test. 12345' c = encrypt(p,5) print(decrypt(c,5))

原文发布于微信公众号 - Python小屋(Python_xiaowu)

原文发表时间:2017-02-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Django Scrapy

多态 接口重用,一种接口,多种实现 实例 ? 多态 静态方法 @staticmethod 在函数前边加修饰@ 为了 让这个方法和类没关系 @c...

29190
来自专栏从零开始学 Web 前端

从零开始学 Web 之 JavaScript(三)函数

全局变量:在 script 使用 var 定义的变量(所有的 script 共享其全局性,js 里面没有块级作用域概念,只有全局作用域和局部作用域)。

8820
来自专栏编程

Python基础—让你规范Python语言的使用

群内不定时分享干货,包括最新的python企业案例学习资料和零基础入门教程,欢迎初学和进阶中的小伙伴入群学习交流 ? Lint 定义: pylint是一个在Py...

22380
来自专栏程序员互动联盟

【C语言基础】内存的初始化

我们编写C语言的时候需要给变量申请一块内存区域,当我们创建一个内存区域的时候,内存中的数据十有八九是乱七八糟的(因为其他代码用过后遗留的数据并没有及时清掉) i...

39560
来自专栏Python爱好者

Android面试之Java基础

14430
来自专栏编程

《5》python字符串和编码

「5」python字符串和编码 ? 字符编码 最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大...

207100
来自专栏前端进阶之路

JS学习系列 07 - 标签声明(Label Statement)

我想要当 j = 2 的时候就退出所有的for语句,打印最后的 done ,你会怎么做?

11320
来自专栏LuckQI

学习Java基础知识,打通面试关七

9810
来自专栏Java帮帮-微信公众号-技术文章全总结

Java基础-11总结Eclipse使用,API,Object类

1:Eclipse的概述使用(掌握) 1:Eclipse的安装 2:用Eclipse写一个HelloWorld案例,最终在控制台输出你的名字 A:创建项目 ...

36560
来自专栏用户2442861的专栏

Python yield 使用浅析

您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ?

9610

扫码关注云+社区

领取腾讯云代金券