博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 简单加密算法小计
阅读量:4593 次
发布时间:2019-06-09

本文共 1351 字,大约阅读时间需要 4 分钟。

这里主要记录 ROT 算法 和 hash 算法

一、ROT13算法

套用ROT13到一段文字上仅仅只需要检查字元顺序并取代它在13位之后的对应字母,有需要超过时则重新绕回26英文字母开头即可[2]。A换成N、B换成O、依此类推到M换成Z,然后序列反转:N换成A、O换成B、最后Z换成M。只有这些出现在英文字母里头的字元受影响;、、空白字元以及所有其他字元都不变。因为只有在英文字母表里头只有26个,并且26=2×13,ROT13函数是它自己的逆反:

        对任何字元x:ROT13(ROT13(x))=ROT26(x)=x
换句话说,两个连续的ROT13应用函式会回复原始文字(在上,这有时称之为(involution);在上,这叫做(reciprocalcipher))。(取自互动百科)

1 def rot13(strs, offset=13):2     rot = {chr(i+c): chr((i+offset) % 26 + c for i in range(26) for c in (65, 97))}3     return ''.join([rot.get(c, c) for c in strs])

二、ROT47算法

ROT47算法是ROT13算法的衍生算法,主要包含了常用特殊字符、数字及大小写字母。

1 def rot47(strs, offset=23): 2     d = {chr(i+c) : chr((i+offset) % 46 + c) for i in range(46) for c in (33, 80)} 3     return ''.join([d.get(c, c) for c in strs]) 4  5  6 # 另一种算法 7 def rot47(strs): 8     sl = [] 9     for i in range(len(strs)):10         j = ord(strs[i])11         if j >= 33 and j <= 126:12             sl.append(chr(((j+14) % 94) + 33))13         else:14             sl.append(strs[i])15     return ''.join(sl)

 

三、hash算法

Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的(又叫做预映射pre-image)通过散列算法变换成固定长度的,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的的函数。(取自百度百科)

hash 是不可逆的。

1 def md5(strs):2     m = hashlib.md5()3     m.update(strs.encode('utf8'))4     return m.hexdigest()

 

参考:

转载于:https://www.cnblogs.com/ToFgetU/p/10626326.html

你可能感兴趣的文章
资金归集率比率sql
查看>>
JavaScript常用字符串操作方法总结
查看>>
LinkedList、ArrayList各自的使用场景,如何确认应该用哪一个?
查看>>
java 并发——内置锁
查看>>
微信小程序实现各种特效实例
查看>>
JAVA编程思想读书笔记(三)--RTTI
查看>>
[洛谷P3931]SAC E#1 - 一道难题 Tree
查看>>
设计模式学习总结:(5)装饰模式
查看>>
sql JOIN语句应注意on与where的区别
查看>>
[转载]python 详解re模块
查看>>
【经验】在CSS中定义a:link、a:visited、a:hover、a:active顺序
查看>>
Linux搭建maven私服
查看>>
中兴机试
查看>>
Node.js的颠覆者:PHP的Swoole扩展
查看>>
Binary Tree的3种非Recursive遍历
查看>>
PCL AllInOne msvc2017 下载
查看>>
电影天堂,批量下载,简单实现
查看>>
oracle 12c 加入系统服务
查看>>
未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项.试图加载格式不正确的程序...
查看>>
【转载】《Flexpaper二次开发入门教程》(十) Flexpaper简单使用-第一个Flexpaper例子(4.1节) ......
查看>>