导航:首页 > 编程语言 > python映射密码

python映射密码

发布时间:2024-08-02 04:29:02

Ⅰ 用python语言从文件夹中提取文件进行凯撒加密

import string
def kaisa(s, k): #定义函数 接受一个字符串s 和 一个偏移量k
lower = string.ascii_lowercase #小写字母
upper = string.ascii_uppercase #大写字母
before = string.ascii_letters #无偏移的字母顺序 小写+大写
after = lower[k:] + lower[:k] + upper[k:] + upper[:k] #偏移后的字母顺序 还是小写+大写
#分别把小写字母和大写字母偏移后再加到一起
table = ''.maketrans(before, after) #创建映射表
return s.translate(table) #对s进行偏移 即加密

s = input('请输入一个字符串:')
k = int(input('请输入一个整数密钥:'))
print(kaisa(s, k))
调用此函数

Ⅱ python 代码中 ret=True 代表什么意思



点击上方 "Python人工智能技术" 关注,星标或者置顶

22点24分准时推送,第一时间送达

后台回复“大礼包”,送你特别福利

编辑:乐乐 | 来自:pypypypy

上一篇:

正文

大家好,我是Pythn人工智能技术。

内置函数就是Python给你提供的,拿来直接用的函数,比如print.,input等。

截止到python版本3.6.2 ,python一共提供了68个内置函数,具体如下

abs() dict() help() min() setattr()
all() dir() hex() next() slice()
any() divmod() id() object() sorted()
ascii() enumerate() input() oct() staticmethod()
bin() eval() int() open() str()
bool() exec() isinstance() ord() sum()
bytearray() filter() issubclass() pow() super()
bytes() float() iter() print() tuple()
callable() format() len() property() type()
chr() frozenset() list() range() vars()
classmethod() getattr() locals() repr() zip()
compile() globals() map() reversed() __import__()
complex() hasattr() max() round()
delattr() hash() memoryview() set()

本文将这68个内置函数综合整理为12大类,正在学习Python基础的读者一定不要错过,建议收藏学习!

和数字相关 1. 数据类型

2. 进制转换print(bin(10)) # 二进制:0b1010
print(hex(10)) # 十六进制:0xa
print(oct(10)) # 八进制:0o12
3. 数学运算print(abs(-2)) # 绝对值:2
print(divmod(20,3)) # 求商和余数:(6,2)
print(round(4.50)) # 五舍六入:4
print(round(4.51)) #5
print(pow(10,2,3)) # 如果给了第三个参数. 表示最后取余:1
print(sum([1,2,3,4,5,6,7,8,9,10])) # 求和:55
print(min(5,3,9,12,7,2)) #求最小值:2
print(max(7,3,15,9,4,13)) #求最大值:15
和数据结构相关 1. 序列

(1)列表和元组

print(list((1,2,3,4,5,6))) #[1, 2, 3, 4, 5, 6]
print(tuple([1,2,3,4,5,6])) #(1, 2, 3, 4, 5, 6)

(2)相关内置函数

lst = "你好啊"
it = reversed(lst) # 不会改变原列表. 返回一个迭代器, 设计上的一个规则
print(list(it)) #['啊', '好', '你']
lst = [1, 2, 3, 4, 5, 6, 7]
print(lst[1:3:1]) #[2,3]
s = slice(1, 3, 1) # 切片用的
print(lst[s]) #[2,3]

(3)字符串

print(str(123)+'456') #123456
format() 与具体数据相关, 用于计算各种小数, 精算等.
s = "hello world!"
print(format(s, "^20")) #剧中
print(format(s, "<20")) #左对齐
print(format(s, ">20")) #右对齐
# hello world!
# hello world!
# hello world!
print(format(3, 'b' )) # 二进制:11
print(format(97, 'c' )) # 转换成unicode字符:a
print(format(11, 'd' )) # ⼗进制:11
print(format(11, 'o' )) # 八进制:13
print(format(11, 'x' )) # 十六进制(⼩写字母):b
print(format(11, 'X' )) # 十六进制(大写字母):B
print(format(11, 'n' )) # 和d⼀样:11
print(format(11)) # 和d⼀样:11

print(format(123456789, 'e' )) # 科学计数法. 默认保留6位小数:1.234568e+08
print(format(123456789, '0.2e' )) # 科学计数法. 保留2位小数(小写):1.23e+08
print(format(123456789, '0.2E' )) # 科学计数法. 保留2位小数(大写):1.23E+08
print(format(1.23456789, 'f' )) # 小数点计数法. 保留6位小数:1.234568
print(format(1.23456789, '0.2f' )) # 小数点计数法. 保留2位小数:1.23
print(format(1.23456789, '0.10f')) # 小数点计数法. 保留10位小数:1.2345678900
print(format(1.23456789e+3, 'F')) # 小数点计数法. 很大的时候输出INF:1234.567890

bs = bytes("今天吃饭了吗", encoding="utf-8")
print(bs) #b''
bytearray() 返回一个新字节数组. 这个数字的元素是可变的, 并且每个元素的值得范围是[0,256)

ret = bytearray("alex" ,encoding ='utf-8')
print(ret[0]) #97
print(ret) #bytearray(b'alex')
ret[0] = 65 #把65的位置A赋值给ret[0]
print(str(ret)) #bytearray(b'Alex')

print(ord('a')) # 字母a在编码表中的码位:97
print(ord('中')) # '中'字在编码表中的位置:20013

print(chr(65)) # 已知码位,求字符是什么:A
print(chr(19999)) #丢

for i in range(65536): #打印出0到65535的字符
print(chr(i), end=" ")

print(ascii("@")) #'@'

s = "今天 吃了%s顿 饭" % 3
print(s)#今天# 吃了3顿 饭
print(repr(s)) # 原样输出,过滤掉转义字符 不管百分号%
#'今天 吃了3顿 饭'
2. 数据集合

frozenset() 创建一个冻结的集合,冻结的集合不能进行添加和删除操作。

3. 相关内置函数

语法:sorted(Iterable, key=函数(排序规则), reverse=False)

lst = [5,7,6,12,1,13,9,18,5]
lst.sort() # sort是list里面的一个方法
print(lst) #[1, 5, 5, 6, 7, 9, 12, 13, 18]

ll = sorted(lst) # 内置函数. 返回给你一个新列表 新列表是被排序的
print(ll) #[1, 5, 5, 6, 7, 9, 12, 13, 18]

l2 = sorted(lst,reverse=True) #倒序
print(l2) #[18, 13, 12, 9, 7, 6, 5, 5, 1]
#根据字符串长度给列表排序
lst = ['one', 'two', 'three', 'four', 'five', 'six']
def f(s):
return len(s)
l1 = sorted(lst, key=f, )
print(l1) #['one', 'two', 'six', 'four', 'five', 'three']

lst = ['one','two','three','four','five']
for index, el in enumerate(lst,1): # 把索引和元素一起获取,索引默认从0开始. 可以更改
print(index)
print(el)
# 1
# one
# 2
# two
# 3
# three
# 4
# four
# 5
# five
print(all([1,'hello',True,9])) #True
print(any([0,0,0,False,1,'good'])) #True
lst1 = [1, 2, 3, 4, 5, 6]
lst2 = ['醉乡民谣', '驴得水', '放牛班的春天', '美丽人生', '辩护人', '被嫌弃的松子的一生']
lst3 = ['美国', '中国', '法国', '意大利', '韩国', '日本']
print(zip(lst1, lst1, lst3)) #
for el in zip(lst1, lst2, lst3):
print(el)
# (1, '醉乡民谣', '美国')
# (2, '驴得水', '中国')
# (3, '放牛班的春天', '法国')
# (4, '美丽人生', '意大利')
# (5, '辩护人', '韩国')
# (6, '被嫌弃的松子的一生', '日本')

语法:fiter(function. Iterable)

function: 用来筛选的函数. 在filter中会自动的把iterable中的元素传递给function. 然后根据function返回的True或者False来判断是否保留留此项数据 , Iterable: 可迭代对象

搜索公众号顶级架构师后台回复“面试”,送你一份惊喜礼包。

def func(i): # 判断奇数
return i % 2 == 1
lst = [1,2,3,4,5,6,7,8,9]
l1 = filter(func, lst) #l1是迭代器
print(l1) #
print(list(l1)) #[1, 3, 5, 7, 9]

语法 : map(function, iterable)

可以对可迭代对象中的每一个元素进行映射. 分别去执行 function

def f(i): return i
lst = [1,2,3,4,5,6,7,]
it = map(f, lst) # 把可迭代对象中的每一个元素传递给前面的函数进行处理. 处理的结果会返回成迭代器print(list(it)) #[1, 2, 3, 4, 5, 6, 7]
和作用域相关

def func():
a = 10
print(locals()) # 当前作用域中的内容
print(globals()) # 全局作用域中的内容
print("今天内容很多")
func()
# {'a': 10}
# {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__':
# <_frozen_importlib_external.SourceFileLoader object at 0x0000026F8D566080>,
# '__spec__': None, '__annotations__': {}, '__builtins__':
# (built-in)>, '__file__': 'D:/pycharm/练习/week03/new14.py', '__cached__': None,
# 'func': }
# 今天内容很多
和迭代器生成器相关for i in range(15,-1,-5):
print(i)
# 15
# 10
# 5
# 0
lst = [1,2,3,4,5]
it = iter(lst) # __iter__()获得迭代器
print(it.__next__()) #1
print(next(it)) #2 __next__()
print(next(it)) #3
print(next(it)) #4
字符串类型代码的执行s1 = input("请输入a+b:") #输入:8+9
print(eval(s1)) # 17 可以动态的执行代码. 代码必须有返回值
s2 = "for i in range(5): print(i)"
a = exec(s2) # exec 执行代码不返回任何内容

# 0
# 1
# 2
# 3
# 4
print(a) #None

# 动态执行代码
exec("""
def func():
print(" 我是周杰伦")
""" )
func() #我是周杰伦
code1 = "for i in range(3): print(i)"
com = compile(code1, "", mode="exec") # compile并不会执行你的代码.只是编译
exec(com) # 执行编译的结果
# 0
# 1
# 2

code2 = "5+6+7"
com2 = compile(code2, "", mode="eval")
print(eval(com2)) # 18

code3 = "name = input('请输入你的名字:')" #输入:hello
com3 = compile(code3, "", mode="single")
exec(com3)
print(name) #hello
输入输出

print("hello", "world", sep="*", end="@") # sep:打印出的内容用什么连接,end:以什么为结尾
#hello*world@
内存相关

hash() : 获取到对象的哈希值(int, str, bool, tuple). hash算法:(1) 目的是唯一性 (2) dict 查找效率非常高, hash表.用空间换的时间 比较耗费内存

s = 'alex'print(hash(s)) #-168324845050430382lst = [1, 2, 3, 4, 5]print(hash(lst)) #报错,列表是不可哈希的 id() : 获取到对象的内存地址s = 'alex'print(id(s)) #2278345368944
文件操作相关

f = open('file',mode='r',encoding='utf-8')
f.read()
f.close()
模块相关# 让用户输入一个要导入的模块
import os
name = input("请输入你要导入的模块:")
__import__(name) # 可以动态导入模块
帮 助print(help(str)) #查看字符串的用途
调用相关a = 10
print(callable(a)) #False 变量a不能被调用
def f():
print("hello")
print(callable(f)) # True 函数是可以被调用的
查看内置属性print(dir(tuple)) #查看元组的方法

你还有什么想要补充的吗?

免责声明:本文内容来源于网络,文章版权归原作者所有,意在传播相关技术知识&行业趋势,供大家学习交流,若涉及作品版权问题,请联系删除或授权事宜。

技术君个人微信

添加技术君个人微信即送一份惊喜大礼包

→ 技术资料共享

→ 技术交流社群

--END--

往日热文:

Python程序员深度学习的“四大名着”:

这四本书着实很不错!我们都知道现在机器学习、深度学习的资料太多了,面对海量资源,往往陷入到“无从下手”的困惑出境。而且并非所有的书籍都是优质资源,浪费大量的时间是得不偿失的。给大家推荐这几本好书并做简单介绍。

获得方式:

2.后台回复关键词:名着

Ⅲ 怎么用Python编辑出此凯撒密码的解密密码

凯撒密码的加密密钥与解密密钥是相反数,因此,k给相反数即可:
kaisa(kaisa(s, 3), -3)

Ⅳ Python编程常用技巧

清理用户输入



对输入的的值进行清理处理,是常见的程序要求。比如要做大小写转化、要验证输入字符的注入,通常可以通过写正则用Regex来做专项任务。但是对于复杂的情况,可以用一些技巧,比如下面:



user_input = "This string has some whitespaces... "



character_map = {



ord(' ') : ' ',



ord(' ') : ' ',



ord(' ') : None



}



在此示例中,可以看到空格字符" "和" "都被替换为空格,而 " "被删除。



这是一个简单的示例,我们还可以使用unicodedata包和combinin()函数来生成大的映射表,以生成映射来替换字符串。



提示用户输入



命令行工具或脚本需要输入用户名和密码才能操作。要用这个功能,一个很有用的技巧是使用getpass模块:



import getpass



user = getpass.getuser()



password = getpass.getpass()



这三行代码就可以让我们优雅的交互提醒用户输入输入密码并捕获当前的系统用户和输入的密码,而且输入密码时候会自动屏蔽显示,以防止被人窃取。



查找字符串频率



如果需要使用查找类似局伍此于某些输入字符串的单词,可以使用difflib来实现:



import difflib



difflib.get_close_matches('appel', ['ape', 'apple', 'peach', 'puppy'], n=2)



# 返回['apple', 'ape']



difflib.get_close_matches会查找相似度最匹配的字串。本例中,第一个参数与第二个参数匹配。提供可选参数n,该参数指定要返回的最大匹配数,以及参数cutoff(默认值为0.6)设置为thr确定匹配字符串的分数。



关于Python编程常用技巧,青藤小编就和您分享到这里了。如果您对python编程有浓厚的兴趣,希望这篇文章可以橘铅为您提供帮助。如果您还想了解更多关于python编程的技巧及素材等内容,可以点击本站的其他桐迅文章进行学习。

Ⅳ 使用python语言如何保密源代码以防止逆向工程

大家都很忙,谁有时间看你的的烂代码!

如果真的怕泄露,别用python.

我以前做过这类事情,而且当时更严格,需要打包部署到客户的服务只在有效期内有效,超过有效期必须更新证书才行。

Python代码用任何方法都没法保证保密性,这个时候你可以考虑用一个工具“nuitka”,这个工具会把你的python源代码映射为c++然后编译为二进制,因此对方是无论如何得不到你的源代码的。

代价就是nuitka这个工具并不完美,有一些限制并不能100%完美的转换所有python代码。

1.用Cython编译python成 Windows的pyd文件或Linux的so文件,二进制文件相对安全性较高。

2.用源码混淆器把代码搞的又臭又长。。。混淆完了再用Cython编译为二进制。。。这样静态反编译逆向难度也不小。

3.同其他语言程序一样,可以对调试状态进行检测,当处于调试状态时退出程序或进入混乱代码耗费逆向工程人员心神。

4.分享一个跨平台反调试手段,检测函数运行时间,加断点会导致函数运行时间变长,也可感知正在被调试。

Python是提倡开源的,既然选择Python还是拥抱开源才好~ 都开源还担心逆向工程嘛

没有不能逆的软件。

只要汇编语言过关,逆向工程都是可以实现的,不要有其它想法。

你唯一可以做的,就是不让别人用python读取源代码而已。那样实现起来比较简单。

python 适合开发服务器程序,或者自己科研使用的程序,如果是 作为用户程序,安装到 pc 或手机上,还是 其它 c++ 或java 比较合适

1)可以把需要保护的部分用c语言实现,从而编译成so等文件,这样逆向的成本会比较高,可以防止直接打开python文件看到代码逻辑。

2)so文件通过ida等工具也是可以反汇编的,可以通过对c语言进行代码混淆,花指令等操作,提高通过ida等反汇编工具的分析难度。

3)不存在绝对无法逆向的技术手段,因此只能是看具体需求,选择具体的防逆向的技术手段。

有工具类似py2exe转成可执行程序,隐藏全部源代码,虽然bytecode还是可以反编译,但是难度大多了

1. 最稳的就是你改cpython加载代码的过程,改zip包读取最稳。

2. 借助一些加密工具在编译pyc之前进行一定的混淆,可以防君子,自我安慰一下。

商用一般都是用第一种办法,小打小闹用第二种。

可以考虑使用pymod工具,使用pymod pack 将模块加密打包,发布的时候一个模块就一个文件。

先睹为快,看看一个项目发布的时候,只有几个文件,

main.py 项目程序入口

setting.py 项目配置

apps 项目模块

plusins 项目插件目录

创建项目 pymod create demo1

cd demo1

创建模块 pymod add mod1

启动pycharm 开始编写功能模块

一个模块默认由三个文件组成

__init__.py 、 handlers.py 、param_schemas.py

业务逻辑主要在handlers.py中编写

__init__.py

from pymod.blueprint import Blueprint api = Blueprint("/mod1") from .handlers import *

param_schemas.py

schema_sfz = { "type": "object", "required": ["sfz", "nl"], "properties": { "sfz": { "type": "string", "minLength": 18, "maxLength": 18, "description": "身份证明号码" }, "nl": { "type": "integer", "minimum": 0, "maximum": 150, "description": "年龄" } } }

handlers.py

from . import api from pymod.ext import RequestHandler, params_validate,TrueResponse,FalseResponse from .param_schemas import schema_sfz from pymod.plugins import sfz_check @api.add_route('/hello') class Hello(RequestHandler): def get(self): self.write('Hello World') @params_validate(schema_sfz) def post(self): sfz = self.get_json_arg("sfz") nl =self.get_json_arg("nl") # self.write(TrueResponse(sfz=sfz, nl=nl)) if sfz_check.check_sfzmhm(sfz): self.write(TrueResponse(hint="身份证明号码验证通过")) else: self.write(FalseResponse(hint="身份证明号码验证失败"))

三、项目部署

程序调试 修改setting.py

# 开发模式下 运行的模块名称必须填写

moles = ["mod1"] moles_config ={ "mod1": { "deny_ip": "", "allow_ip": "*" } }

启动程序 python main.py

调试没有问题,进入发布模式

在项目目录下

pymod pack mod1

在target目录下生成mod1.mod文件,将其复制到apps目录中

修改setting.py

# 开发模式下 运行的模块名称必须填写

moles = []

再次运行 python main.py 测试

一切OK,系统就可以发布了。

说不能保密的,是没有研究过python的机制的。我做个一个项目,所有源代码自定义加密,运行时解密。

Ⅵ python涓濡备綍灏0/1/2鏄犲皠鎴愮煶澶/鍓鍒=甯冨苟璧嫔肩粰a,浣跨敤random鍜寃hile+tru锛

鍙浠ヤ娇鐢≒ython涓镄勫瓧鍏稿皢鏁板瓧鏄犲皠鎴愬瓧绗︿覆锛岀劧钖庝娇鐢╮andom妯″潡鐢熸垚闅忔満鏁帮纴骞剁敤while寰鐜涓嶆柇杩涜屾瘆杈冿纴鐩村埌链夎儨钥呬负姝銆浠ヤ笅鏄绀轰緥浠g爜锛

import random

# 瀹氢箟鏁板瓧鍜屽瓧绗︿覆镄勬椠灏勫叧绯

mapping = {0: '鐭冲ご', 1: '鍓鍒', 2: '甯'}

# 鐢熸垚闅忔満鏁

computer = random.randint(0, 2)

# 鍒濆嫔寲鐜╁堕夋嫨鍜岃儨钥

player = -1

winner = None

# 寰鐜姣旇缉锛岀洿鍒版湁鑳滆呬负姝

while winner is None:

# 鐜╁惰緭鍏ラ夋嫨

player = int(input("璇疯緭鍏ヤ綘镄勯夋嫨锛0:鐭冲ご锛1:鍓鍒锛2:甯冿级锛"))

# 鍒ゆ柇杈揿叆鏄钖﹀悎娉

if player not in [0, 1, 2]:

print("阃夋嫨涓嶅悎娉曪纴璇烽吨鏂拌緭鍏ャ")

continue

# 鍒ゆ柇鑳滆礋

if player == computer:

print("骞冲眬锛佺数鑴戝嚭浜%s銆" % mapping[computer])

elif player == (computer + 1) % 3:

print("浣犺耽浜嗭紒鐢佃剳鍑轰简%s銆" % mapping[computer])

winner = 'player'

else:

print("浣犺緭浜嗭紒鐢佃剳鍑轰简%s銆" % mapping[computer])

winner = 'computer'

# 镓揿嵃鑳滆

if winner == 'player':

print("鎭锽滀綘銮疯儨锛")

else:

print("寰堥仐镋撅纴鐢佃剳銮疯儨浜嗐")

鍦ㄤ笂杩颁唬镰佷腑锛岄栧厛瀹氢箟浜嗘暟瀛楀拰瀛楃︿覆镄勬椠灏勫叧绯伙纴铹跺悗浣跨敤random妯″潡鐢熸垚浜嗙数鑴戠殑阃夋嫨銆傚湪while寰鐜涓锛岀帺瀹惰緭鍏ラ夋嫨锛岀劧钖庡垽鏂鑳滆礋锛屽苟镙规嵁缁撴灉镟存柊鑳滆呫傛渶钖庢墦鍗拌儨钥呫

阅读全文

与python映射密码相关的资料

热点内容
机房服务器电源线如何扎线 浏览:730
什么算法治宣传 浏览:18
哪个app可以测温枪 浏览:17
macmongodbphp 浏览:322
php写游戏服务器 浏览:871
对立阵营插旗命令 浏览:363
java实现帕斯卡三角形算法 浏览:314
linux文件名限制 浏览:700
金税三期代理服务器地址是什么意思 浏览:429
多自变量拟合Python 浏览:452
文件夹加密总是失败 浏览:510
androiddexpathlist 浏览:624
要卸载己加密的文件怎么办 浏览:158
ping服务器ip地址失败 浏览:136
成都黑马程序员 浏览:637
成考app哪个好 浏览:702
linux当前线程id 浏览:342
哪个app支持扫花呗 浏览:838
着色器编译程序 浏览:583
怎样看app所属文件夹 浏览:543