Python实现的排列组合、破解密码算法示例

 更新时间:2019年04月12日 08:45:18   作者:微信1257309054  
这篇文章主要介绍了Python实现的排列组合、破解密码算法,结合实例形式分析了Python排列组合、密码破解相关数学运算操作技巧,需要的朋友可以参考下

本文实例讲述了Python实现的排列组合、破解密码算法。分享给大家供大家参考,具体如下:

排列组合(破解密码)

1.排列

itertools.permutations(iterable,n)

参数一:要排列的序列,
参数二:要选取的个数
返回的是一个迭代对象,迭代器中的每一个元素都是一个元组

import itertools
#概念:从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列,叫做从n个元素中取出m个元素的一个排列(Arrangement)。特别地,当m=n时,这个排列被称作全排列(Permutation)
'''
1 2 3 4
假设从中取出3个数字
123
132
213
231
321
312
'''
#需求:从[1,2,3,4]4个数中随机取出3个数进行排列
mylist = list(itertools.permutations([1,2,3,4], 3))
print(mylist)
print(len(mylist))
'''
规律总结:
4 - 3  24
4 - 2  12
4 - 1  4
排列的可能性次数:n! / (n-m)!
'''

2.组合

itertools.combinations(iterable,n)

参数一:可迭代对象
参数二:要选取的个数
返回值:返回一二迭代器,迭代器中的每一个元素都是一个元组

import itertools
#概念:从m个不同的元素中,任取n(n≤m)个元素为一组,叫作从m个不同元素中取出n个元素的进行组合
'''
1 2 3 4 5 中选4个数的组合方式有几种?
'''
mylist = list(itertools.combinations([1,2,3,4,5], 4))
print(mylist)
print(len(mylist))
'''
规律总结:
m  n
5 - 5  1
5 - 4  5
5 - 3  10
5 - 2  10
5!
120/120(m-n)!
120/24(m-n)!
120/6(m-n)!
m!/(n!x(m-n)!)
'''

3.排列组合

itertools.product(iterable,repeat=1)

参数一:可迭代对象,参数二:重复的次数,默认为1

import itertools
'''
_ _ _ _ _
'''
mylist = list(itertools.product("0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm", repeat=6))
#可以尝试10,有可能电脑会卡住
#多线程也不行,电脑内存不够,咋处理都白搭
#print(mylist)
print(len(mylist))

扩展:现在但凡涉及到密码,一般都会进行加密处理,常用的加密方式有MD5,RSA,DES等

4.疯狂破解密码

伤敌一千自损一万的破解方式

import time
import itertools
#mylist = list(itertools.product("0123456789", repeat=10))
passwd = ("".join(x) for x in itertools.product("0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm", repeat=6))
#print(mylist)
#print(len(mylist))
while True:
  #先直接实现,然后再添加异常
  try:
    str = next(passwd)
    time.sleep(0.5)
    print(str)
  except StopIteration as e:
    break

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • 用opencv给图片换背景色的示例代码

    用opencv给图片换背景色的示例代码

    这篇文章主要介绍了用opencv给图片换背景色的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • python PyTorch预训练示例

    python PyTorch预训练示例

    这篇文章主要介绍了python PyTorch预训练示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • python调用subprocess模块实现命令行操作控制SVN的方法

    python调用subprocess模块实现命令行操作控制SVN的方法

    这篇文章主要介绍了使用python的subprocess模块实现对SVN的相关操作,通过设置GitSvn类,在该类下自定义执行SVN常规操作的方法,需要的朋友跟随小编一起看看吧
    2022-09-09
  • Python代码实现粒子群算法图文详解

    Python代码实现粒子群算法图文详解

    这篇文章主要介绍了Python编程实现粒子群算法详解,涉及粒子群算法的原理,过程,以及实现代码示例,具有一定参考价值,需要的朋友可以了解下
    2021-08-08
  • 关于Python中的海象运算符使用方法详解

    关于Python中的海象运算符使用方法详解

    这篇文章主要介绍了关于Python中的海象运算符“:=”使用方法详解,海象运算符(walrus operator)是 Python 3.8 中引入的一种新的语法,需要的朋友可以参考下
    2023-04-04
  • python中xrange用法分析

    python中xrange用法分析

    这篇文章主要介绍了python中xrange用法,实例分析了xrange的功能、作用以及与range在使用中的区别,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • Python执行流程控制详情

    Python执行流程控制详情

    这篇文章主要介绍了Python执行流程控制,流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构、分支结构、循环结构,下文详细介绍需要的小伙伴可以参考一下
    2022-04-04
  • 跟老齐学Python之私有函数和专有方法

    跟老齐学Python之私有函数和专有方法

    这篇文章是老齐学Python系列文章的一篇,主要介绍了跟私有函数和专有方法,需要的朋友可以参考下
    2014-10-10
  • python Xarray处理设置二维数组作为coordinates方式

    python Xarray处理设置二维数组作为coordinates方式

    这篇文章主要介绍了python Xarray处理设置二维数组作为coordinates方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 深入了解Python Opencv数据增强

    深入了解Python Opencv数据增强

    常见的数据增强操作有:按比例放大或缩小图片、旋转、平移、水平翻转、改变图像通道等。本文将通过Python OpenCV实现这些操作,需要的可以参考一下
    2022-02-02

最新评论