python加密函数名 python中密码加密

python程序求解def encrypt(char):
if char.isupper():
return chr((ord(char) - ord('A')1) % 26ord('A'))
elif char.islower():
return chr((ord(char) - ord('a')1) % 26ord('a'))
else:
return char
with open('words_file.txt', 'r') as f:
content = f.read()
encrypted_content = ''.join(encrypt(c) for c in content)
with open('new_file.txt', 'w') as f:
f.write(encrypted_content)
在上面的代码中,我们首先使用 open() 函数打开 words_file.txt 文件,然后使用 read() 方法读取文件中的所有内容 。
然后,我们使用一个名为 encrypt() 的函数来加密文件内容中的英文字母 。该函数使用 isupper() 和 islower() 函数来判断字符是否为大写字母或小写字母 。如果是大写字母,则使用 ord() 函数将字符转换为 ASCII 码,然后使用上述规则进行加密 。如果是小写字母,则使用相同的方法进行加密 。如果字符不是字母,则直接返回该字符 。
最后,我们使用 join() 函数将加密后的文件内容拼接起来,然后使用 open() 函数打开 new_file.txt 文件 , 并使用 write() 方法将加密后的文件内容写入该文件 。
机器人回答.
怎样对 Python 源码加密代码加密
大概整理了以下几种方法:
编译成pyc文件
使用py2exe将python代码转成window下执行的exe文件
关键代码部分使用c或者c写,然后在python中调用
用C写一个license,进行license验证
作为一门解释型的语言,加密的难度超级大 。下面来简单分析上面的解决方案:
编译成pyc文件几乎跟pyc没有区别,保护力度太低
要是在linux机器上就没法使用,而且这种exe文件也可以被破解的
核心代码部分是计算密集型,用的是pandas,numpy等库 , 用c重写,简直不可能,工作量太大 。
没搞过,不知道………
看来上面的解决方案都是不行的,在stackoverflow上对这个问题也进行了详细的讨论 , 用我蹩脚的英文来翻译(意译)一下得票率最高的:
“有什么方法来解决这个问题吗?(加密的问题)”没有 。任何保护都可以被逆向工程破解 。就连DVD机的固件都可以被破解,尽管法律判定其为非法,但是AACS加密密钥还是泄露出来 。
因为没有技术的方法可以阻止你的客户看你的代码,你必须用传统的商业方法 。
1. 许可证,合约,条款 , 条件 。只要用户签订了这些东西,及时用户可以看见代码,也会有法律约束(不过此建议在中国目前貌似不顶用)
2. 提供巨大的价值 。如果你的东西非常好,而且价格很合理,那么用户很难拒绝——没必要浪费时间和金钱去搞逆向工程啥的 , 因为逆向工程是很费银子的 。让你的产品有足够的性价比 。
3. 经常性的升级和增加新的功能 , 使得逆向工程不那么好使 。当下一个版本破坏了逆向工程,那么以前的破解就没有意义了 。
4. 定制化生产,为不同的客户提供不同的产品 。(貌似代价有点高?。?
5. 使用有时间限制的许可证,这会给你带来不好的名声,但是会保证你的软件会停止工作
6. 设计为web service.
代码混淆
既然加密不是一个好方法,那要还是不死心 , 那就做一个简单的混淆算了,虽然只能”防君子,不防小人“ 。但是不能就这样把代码暴露出来 。
这里推荐一个找了好久的东西: pyobfuscate这个东西在window7中的cmd中貌似总是混淆失败,无奈用了MINGW32,居然搞定了 。官方的资料有这样的介绍:
pyobfuscate有几种转化代码的方式,有些可逆 , 有些不可逆 。
移除注释和文档 ( 不可逆)
改变缩进(可逆)
在tokens之间加入空格(一定程度上可逆)
重命名函数,类,和变量(不可逆)
在空白行中加入无效的代码
我没有选择混淆函数名和类名,因为其他地方还要调用呢 。下面是我混淆的结果,还挺好看的:
def my_fuction_to_test ( self , start_date , end_date ) :
iiiii11iII1 = self . get_something ( start_date , end_date )
O0o = [ ]
for oO0 in iiiii11iII1 :
if oO0 [ "isOpen" ] == 1 :
IIIi1i1I = { }
OOoOoo00oo = dt . strptime ( oO0 [ 'calendarDate' ] , '%Y-%m-%d' )
IIIi1i1I [ 'day' ] = OOoOoo00oo . strftime ( '%Y%m%d' )
IIIi1i1I [ 'week' ] = oO0 [ 'isWeekEnd' ]
IIIi1i1I [ 'month' ] = oO0 [ 'isMonthEnd' ]
IIIi1i1I [ 'weekday' ] = OOoOoo00oo . weekday ( )
O0o . append ( IIIi1i1I )
iiI11 = pd . DataFrame ( O0o )
return iiI11
Python中的匿名函数——lambda函数 在Python中,lambda函数是一个简单的匿名函数 。该函数没有函数名,它可以有多个参数 , 但函数只由一个表达式构成 。
lambda函数具体的格式如下:
lambda参数:表达式
其中,lambda 是关键字, 参数 是函数的参数,可以有0至多个 。冒号后面是表达式,也是该函数中的唯一的表达式,lambda函数会返回该表达式的返回值 。
我们来看一个具体的例子 。
在上述代码中,number1, number2是lambda函数的参数,number1**2 number**2是函数的表达式 , 该函数返回number1, number2两个数的平方和 。
上述代码创建了一个lambda函数后将其赋值给变量sum_square, 在print函数中通过sum_square来调用这个lambda函数 。
上述的lambda函数完全可用标准的函数来实现,我们可以将上述代码改写成下面的代码 。
在代码中,定义了函数sum_square,该函数包含两个参数,并执行一条语句并将该语句的执行结果作为函数返回值 。通过上述代码可以帮助我们更直观地理解lambda函数 。
lambda函数的可读性较差,那么为什么要有这样奇怪的匿名函数呢?这个要从lambda的使用场合说起 。我们来看下面的代码 。
上述代码定义了一个数值列表 , 调用python的内置函数filter来生成一个新的迭代器 。filter函数的第一个参数为一个函数,用于决定过滤的方法;第二个参数为一个可迭代的对象如列表、集合等 。filter函数返回一个新的迭代器, 用于获得满足第一个函数为真的所有元素 。在上述代码中,我们给filter传递的第一个参数是一个匿名函数:lambda number:number%3==0,该函数在一个数整除3时为True,否则为False. filter函数会创建一个新的迭代器,通过调用上述匿名函数来判断该元素是否满足条件,得到所有3的倍数的数 。
当然,上述代码也可以使用正常的函数方式来实现,如下所示:
我们可以看到,所有匿名函数的功能都可以通过标准函数来实现 。匿名函数常在调用其它函数(如filter, map等)时作为参数使用 。使用匿名函数可以使代码更为精简 。匿名函数主要用于完成简单的任务,如果匿名函数过于复杂,会导致可读性较差,调试起来也比较困难,因此 , 强烈不建议使用lambda写天书般的代码 。总之,要根据实际情况决定是否使用匿名函数 。
Python 加密程序#coding=utf-8
'''''
Description: 可逆的加密与解密
Environment: python2.5.x
Author:idehong@gmail.com
'''
import os
import sys
class Code(object):
'''''可逆的加密与解密'''
def __init__(self, key = "idehong@gmail.com"):
self.__src_key = key
self.__key = self.__get_strascii(self.__src_key, True)
def encode(self, value):
'''''加密函数, 加密后为一串数字'''
return"%d" % (self.__get_strascii(value, True) ^ self.__key)
def decode(self, pwd):
'''''解密函数'''
if self.is_number(pwd):
return self.__get_strascii( (int(pwd)) ^ self.__key, False )
else:
print 'require number.'
def reset_key(self, key):
'''''重新设置key'''
self.__src_key = key
self.__key = self.__get_strascii(self.__src_key, True)
#===============================================================================
#内部调用接口
#===============================================================================
def __get_strascii(self, value, bFlag):
if bFlag:
return self.__get_str2ascii(value)
else:
return self.__get_ascii2str(value)
def __get_str2ascii(self, value):
ls = []
for i in value:
ls.append( self.__get_char2ascii( i ) )
return long("".join(ls))
def __get_char2ascii(self, char):
'''''获取单个字符的acsii码值'''
try:
return ".d" % ord(char)
except (TypeError, ValueError):
print "key error."
exit(1)
def __get_ascii2char(self, ascii):
if self.is_ascii_range(ascii):
return chr(ascii)
else:
print "ascii error(%d)" % ascii
exit(1)
def __get_ascii2str(self, n_chars):
ls = []
s = "%s" % n_chars
n, p = divmod(len(s), 3)
if p0:
nRet = int(s[0 : p])
ls.append( self.__get_ascii2char(nRet))
pTmp = p
while pTmplen(s):
ls.append( self.__get_ascii2char( int(s[pTmp: pTmp3])) )
pTmp= 3
return "".join(ls)
#================================================================================
#工具接口
#================================================================================
def is_number(self, value):
try:
int(value)
return True
except (TypeError, ValueError):
pass
return False
def is_ascii_range(self, n):
return 0 = n256
def is_custom_ascii_range(self, n):
return 33 = n 48 or 58 = n126
class Usage(object):
'''''
命令行参数读取与解析
'''
def __init__(self):
self._clsWork = Code()
self._args_dic = {'arg_help' : ['-?', '-help'],
'arg_p' : ['-p', '-pwd'],
'arg_t' : ['-t', '-text'],
'arg_k' : ['-k', '-key'],
}
def help(self, *k):
strHelp = "Usage: pwd [-options] [args...] where option include:"
strHelp= """
-? -helpprint this help message
-k key_str -p pwd_str
-k key_str -t text_str"""
print strHelp
def args(self, argv_ls):
'''''dispatch command'''
#print argv_ls
if len(argv_ls) = 1 or len(argv_ls)5:
print 'Unrecognized option'
return
cmd_dic = {}
curr_cmd = ''
# control command
for i, v in enumerate(argv_ls[1:]):
for j in self._args_dic.items():
# add command
if v in j[1] and j[0] not in cmd_dic:
curr_cmd = j[0]
cmd_dic[curr_cmd] = []
break
else:
# add argv
if cmd_dic:
cmd_dic[curr_cmd].append(v)
# exec command
if cmd_dic:
self.exec_cmd(cmd_dic)
else:
print 'Unrecognized option'
def exec_cmd(self, cmd_dic):
'''''exec cmd'''
if len(cmd_dic) == 2:
if 'arg_p' in cmd_dic and 'arg_k' in cmd_dic\
and len(cmd_dic['arg_p']) == 1 and len(cmd_dic['arg_k']) == 1:
self._clsWork.reset_key(cmd_dic['arg_k'][0])
print self._clsWork.encode(cmd_dic['arg_p'][0])
return
elif 'arg_t' in cmd_dic and 'arg_k' in cmd_dic\
and len(cmd_dic['arg_t']) == 1 and len(cmd_dic['arg_k']) == 1:
self._clsWork.reset_key(cmd_dic['arg_k'][0])
print self._clsWork.decode(cmd_dic['arg_t'][0])
return
self.help()
if __name__ == '__main__':
usage = Usage()
usage.args(sys.argv)
python常用函数包有哪些?一些python常用函数包:
1、Urllib3
Urllib3是一个 Python 的 HTTP 客户端,它拥有 Python 标准库中缺少的许多功能:
线程安全
连接池
客户端 SSL/TLS 验证
使用分段编码上传文件
用来重试请求和处理 HTTP 重定向的助手
支持 gzip 和 deflate 编码
HTTP 和 SOCKS 的代理支持
2、Six
six 是一个是 Python 2 和 3 的兼容性库 。这个项目旨在支持可同时运行在 Python 2 和 3 上的代码库 。它提供了许多可简化 Python 2 和 3 之间语法差异的函数 。
3、botocore、boto3、s3transfer、awscli
Botocore是 AWS 的底层接口 。Botocore是 Boto3 库(#22)的基础,后者让你可以使用 Amazon S3 和 Amazon EC2 一类的服务 。Botocore 还是 AWS-CLI 的基?。笳呶?AWS 提供统一的命令行界面 。
S3transfer(#7)是用于管理 Amazon S3 传输的 Python 库 。它正在积极开发中 , 其介绍页面不推荐人们现在使用,或者至少等版本固定下来再用,因为其 API 可能发生变化,在次要版本之间都可能更改 。Boto3、AWS-CLI和其他许多项目都依赖s3transfer 。
4、Pip
pip是“Pip Installs Packages”的首字母递归缩写 。
pip很容易使用 。要安装一个包只需pip install package name即可,而删除包只需pip uninstall package name即可 。
最大优点之一是它可以获取包列表 , 通常以requirements.txt文件的形式获取 。该文件能选择包含所需版本的详细规范 。大多数 Python 项目都包含这样的文件 。
如果结合使用pip与virtualenv(列表中的 #57),就可以创建可预测的隔离环境,同时不会干扰底层系统,反之亦然 。
5、Python-dateutil
python-dateutil模块提供了对标准datetime模块的强大扩展 。我的经验是,常规的Python datetime缺少哪些功能,python-dateutil就能补足那一块 。
6、Requests
Requests建立在我们的 #1 库——urllib3基础上 。它让 Web 请求变得非常简单 。相比urllib3来说 , 很多人更喜欢这个包 。而且使用它的最终用户可能也比urllib3更多 。后者更偏底层,并且考虑到它对内部的控制级别,它一般是作为其他项目的依赖项 。
7、Certifi
近年来,几乎所有网站都转向 SSL,你可以通过地址栏中的小锁符号来识别它 。加了小锁意味着与该站点的通信是安全和加密的,能防止窃听行为 。
8、Idna
根据其 PyPI 页面 , idna提供了“对 RFC5891 中指定的应用程序中国际化域名(IDNA)协议的支持 。”
IDNA的核心是两个函数:ToASCII和ToUnicode 。ToASCII会将国际 Unicode 域转换为 ASCII 字符串 。ToUnicode则逆转该过程 。在IDNA包中,这些函数称为idna.encode()和idna.decode()
9、PyYAML
YAML是一种数据序列化格式 。它的设计宗旨是让人类和计算机都能很容易地阅读代码——人类很容易读写它的内容,计算机也可以解析它 。
PyYAML是 Python 的YAML解析器和发射器 , 这意味着它可以读写YAML 。它会把任何 Python 对象写成YAML:列表、字典,甚至是类实例都包括在内 。
10、Pyasn1
像上面的IDNA一样,这个项目也非常有用:
ASN.1 类型和 DER/BER/CER 编码(X.208)的纯 Python 实现
所幸这个已有数十年历史的标准有很多信息可用 。ASN.1是 Abstract Syntax Notation One 的缩写 , 它就像是数据序列化的教父 。它来自电信行业 。也许你知道协议缓冲区或 Apache Thrift?这就是它们的 1984 年版本 。
11、Docutils
Docutils是一个模块化系统,用来将纯文本文档处理为很多有用的格式,例如 HTML、XML 和 LaTeX 等 。Docutils能读取reStructuredText格式的纯文本文档,这种格式是类似于 MarkDown 的易读标记语法 。
12、Chardet
你可以用chardet模块来检测文件或数据流的字符集 。比如说,需要分析大量随机文本时,这会很有用 。但你也可以在处理远程下载的数据,但不知道用的是什么字符集时使用它 。
13、RSA
rsa包是一个纯 Python 的 RSA 实现 。它支持:
加密和解密
签名和验证签名
根据 PKCS#1 1.5 版生成密钥
它既可以用作 Python 库,也能在命令行中使用 。
14、Jmespath
JMESPath,发音为“James path”,使 Python 中的 JSON 更容易使用 。它允许你声明性地指定如何从 JSON 文档中提取元素 。
15、Setuptools
它是用于创建 Python 包的工具 。不过,其文档很糟糕 。它没有清晰描述它的用途,并且文档中包含无效链接 。最好的信息源是这个站点,特别是这个创建 Python 包的指南 。
16、Pytz
像dateutils一样,这个库可帮助你处理日期和时间 。有时候,时区处理起来可能很麻烦 。幸好有这样的包,可以让事情变得简单些 。
17、Futures
从 Python 3.2 开始,python 提供current.futures模块 , 可帮助你实现异步执行 。futures 包是该库适用于 Python 2 的 backport 。它不适用于 Python3 用户,因为 Python 3 原生提供了该模块 。
18、Colorama
使用 Colorama,你可以为终端添加一些颜色:
更多Python知识请关注Python自学网
Python中几个特殊的函数1、 定义一个特殊python加密函数名的__slots__变量python加密函数名,来限制该class实例能添加python加密函数名的属性
2、 内置python加密函数名的@property(关键字)装饰器就是负责把一个方法变成属性调用的 。@property.setter(这里的property是类里面的属性名)负责把一个setter方法变成属性赋值 。
3、__str__()python加密函数名,__repr__() , __iter__(),__next__(),__getitem__() , __setitem__(),__delitem__(),__getattr__(),__call__()
【python加密函数名 python中密码加密】python加密函数名的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于python中密码加密、python加密函数名的信息别忘了在本站进行查找喔 。

    推荐阅读