新聞中心
用python3.4進(jìn)行各種加密算法的例子
這是一個(gè)MD5加密的函數(shù)例子,僅供參考
成都創(chuàng)新互聯(lián)IDC提供業(yè)務(wù):遂寧聯(lián)通機(jī)房,成都服務(wù)器租用,遂寧聯(lián)通機(jī)房,重慶服務(wù)器租用等四川省內(nèi)主機(jī)托管與主機(jī)租用業(yè)務(wù);數(shù)據(jù)中心含:雙線機(jī)房,BGP機(jī)房,電信機(jī)房,移動(dòng)機(jī)房,聯(lián)通機(jī)房。
import?hashlib
def?md5(s):
m?=?hashlib.md5()
m.update(s.encode(encoding="utf-8"))
return?m.hexdigest()
print(md5('1'))
python文本加密是什么??
python文本加密是Python 提供了諸如 hashlib,base64 等便于使用的加密庫(kù),我們可以借助異或操作,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的文件加密程序。
通過(guò)了解異或操作的性質(zhì),加密原理就非常清晰了。
首先將文件轉(zhuǎn)換成二進(jìn)制數(shù),再生成與該二進(jìn)制數(shù)等長(zhǎng)的隨機(jī)密鑰,將二進(jìn)制數(shù)與密鑰進(jìn)行異或操作,得到加密后的二進(jìn)制數(shù)。
將加密后的二進(jìn)制程序與密鑰進(jìn)行異或操作,就得到原二進(jìn)制數(shù),最后將原二進(jìn)制數(shù)恢復(fù)成文本文件。
相關(guān)拓展
加密,是以某種特殊的算法改變?cè)械男畔?shù)據(jù),使得未授權(quán)的用戶即使獲得了已加密的信息,但因不知解密的方法,仍然無(wú)法了解信息的內(nèi)容。
加密之所以安全,絕非因不知道加密解密算法方法,而是加密的密鑰是絕對(duì)的隱藏,流行的RSA和AES加密算法都是完全公開(kāi)的,一方取得已加密的數(shù)據(jù),就算知道加密算法也好,若沒(méi)有加密的密鑰,也不能打開(kāi)被加密保護(hù)的信息。
單單隱蔽加密算法以保護(hù)信息,在學(xué)界和業(yè)界已有相當(dāng)討論,一般認(rèn)為是不夠安全的。公開(kāi)的加密算法是給黑客和加密家長(zhǎng)年累月攻擊測(cè)試,對(duì)比隱蔽的加密算法要安全得多。
盡管加密或?yàn)榱税踩康膶?duì)信息解碼這個(gè)概念十分簡(jiǎn)單,但在這里仍需對(duì)其進(jìn)行解釋。數(shù)據(jù)加密的基本過(guò)程包括對(duì)稱(chēng)為明文的原來(lái)可讀信息進(jìn)行翻譯,譯成稱(chēng)為密文或密碼的代碼形式。該過(guò)程的逆過(guò)程為解密,即將該編碼信息轉(zhuǎn)化為其原來(lái)的形式的過(guò)程。
以上內(nèi)容參考 百度百科-加密
python內(nèi)置函數(shù)有哪些
python常見(jiàn)的內(nèi)置函數(shù)有:
1. abs()函數(shù)返回?cái)?shù)字的絕對(duì)值。
2. all() 函數(shù)用于判斷給定的參數(shù)中的所有元素是否都為 TRUE,如果是返回 True,否則返回 False。元素除了是 0、空、None、False 外都算 True;空元組、空列表返回值為T(mén)rue。
3. any() 函數(shù)用于判斷給定的參數(shù)是否全部為False,是則返回False,如果有一個(gè)為T(mén)rue,則返回True。 元素除了是 0、空、False外都算 TRUE。
4. bin()函數(shù)返回一個(gè)整數(shù)int或者長(zhǎng)整數(shù)long int的二進(jìn)制表示。
5. bool() 函數(shù)用于將給定參數(shù)轉(zhuǎn)換為布爾類(lèi)型,如果參數(shù)不為空或不為0,返回True;參數(shù)為0或沒(méi)有參數(shù),返回False。
6. bytearray()方法返回一個(gè)新字節(jié)數(shù)組。這個(gè)數(shù)組里的元素是可變的,并且每個(gè)元素的值范圍: 0 = x 256(即0-255)。即bytearray()是可修改的二進(jìn)制字節(jié)格式。
7. callable()函數(shù)用于檢查一個(gè)對(duì)象是否可調(diào)用的。對(duì)于函數(shù)、方法、lambda函式、類(lèi)以及實(shí)現(xiàn)了 __call__ 方法的類(lèi)實(shí)例, 它都返回 True。(可以加括號(hào)的都可以調(diào)用)
8. chr()函數(shù)用一個(gè)范圍在range(256)內(nèi)(即0~255)的整數(shù)作參數(shù),返回一個(gè)對(duì)應(yīng)的ASCII數(shù)值。
9. dict()函數(shù)用來(lái)將元組/列表轉(zhuǎn)換為字典格式。
10. dir()函數(shù)不帶參數(shù)時(shí),返回當(dāng)前范圍內(nèi)的變量、方法和定義的類(lèi)型列表;帶參數(shù)時(shí),返回參數(shù)的屬性、方法列表。
擴(kuò)展資料:
如何查看python3.6的內(nèi)置函數(shù)?
1、首先先打開(kāi)python自帶的集成開(kāi)發(fā)環(huán)境IDLE;
2、然后我們直接輸入"dir(__builtins__)",需要注意的是builtins左右的下劃線都是兩個(gè);
3、回車(chē)之后我們就可以看到python所有的內(nèi)置函數(shù);
4、接下來(lái)我們學(xué)習(xí)第二種查看python內(nèi)置函數(shù)的方法,我們直接在IDLE中輸入"import builtins",然后輸入"dir(builtins)";
5、然后回車(chē),同樣的這個(gè)方法也可以得到所有的python內(nèi)置的函數(shù);
6、這里我們可以使用python內(nèi)置函數(shù)len()來(lái)查看python內(nèi)置函數(shù)的個(gè)數(shù),這里我們直接輸入"len(dir(builtins))";
7、回車(chē)之后我們可以看到系統(tǒng)返回值153,說(shuō)明我們現(xiàn)在這個(gè)版本中有153個(gè)內(nèi)置函數(shù);
8、最后我們介紹一個(gè)比較有用的內(nèi)置函數(shù)"help",python內(nèi)置函數(shù)有一百多個(gè),我們當(dāng)然不能記住所有的函數(shù),這里python提供了一個(gè)"help"函數(shù),我們來(lái)看一個(gè)例子一起來(lái)體會(huì)一下help函數(shù)的用法,這里我們直接輸入"help(len)",然后回車(chē),會(huì)看到系統(tǒng)給我們對(duì)于內(nèi)置函數(shù)"len"的解釋?zhuān)?dāng)然對(duì)于其他函數(shù)可能會(huì)有更加詳細(xì)的解釋以及用法提示。
python電文加密?
##注意:最左邊每個(gè)=表示一個(gè)空格
def encrypt(t):
====s=""
====for e in t:
========if e.islower():
============s+=chr(97+(ord(e)-97+7)%26)
========elif e.isupper():
============s+=chr(65+(ord(e)-65+7)%26)
========else:
============s+=e
====return s
t=input()
print(t,encrypt(t))
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):???
'''''加密函數(shù),?加密后為一串?dāng)?shù)字'''?
return??"%d"?%?(self.__get_strascii(value,?True)?^?self.__key)???
def?decode(self,?pwd):???
'''''解密函數(shù)'''?
if?self.is_number(pwd):???
return?self.__get_strascii(?(int(pwd))?^?self.__key,?False?)???
else:???
print?'require?number.'?
def?reset_key(self,?key):???
'''''重新設(shè)置key'''?
self.__src_key?=?key???
self.__key?=?self.__get_strascii(self.__src_key,?True)???
#===============================================================================???
#????????內(nèi)部調(diào)用接口???
#===============================================================================???
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):???
'''''獲取單個(gè)字符的acsii碼值'''?
try:???
return?"%03.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?p??0:???
nRet?=?int(s[0?:?p])???
ls.append(?self.__get_ascii2char(nRet))???
pTmp?=?p???
while?pTmp??len(s):???
ls.append(?self.__get_ascii2char(?int(s[pTmp:?pTmp?+?3]))?)
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?=?n??256?
def?is_custom_ascii_range(self,?n):???
return?33?=?n?48?or?58?=?n??126?????????
class?Usage(object):???
'''''??
命令行參數(shù)讀取與解析??
'''?
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?+=?"""??
-??-help????????????????????print?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有多少內(nèi)置函數(shù)
Python內(nèi)置函數(shù)有很多,為大家推薦5個(gè)神仙級(jí)的內(nèi)置函數(shù):
(1)Lambda函數(shù)
用于創(chuàng)建匿名函數(shù),即沒(méi)有名稱(chēng)的函數(shù)。它只是一個(gè)表達(dá)式,函數(shù)體比def簡(jiǎn)單很多。當(dāng)我們需要?jiǎng)?chuàng)建一個(gè)函數(shù)來(lái)執(zhí)行單個(gè)操作并且可以在一行中編寫(xiě)時(shí),就可以用到匿名函數(shù)了。
Lamdba的主體是一個(gè)表達(dá)式,而不是一個(gè)代碼塊。僅僅能在lambda表達(dá)式中封裝有限的邏輯進(jìn)去。
利用Lamdba函數(shù),往往可以將代碼簡(jiǎn)化許多。
(2)Map函數(shù)
會(huì)將一個(gè)函數(shù)映射到一個(gè)輸入列表的所有元素上,比如我們先創(chuàng)建了一個(gè)函數(shù)來(lái)返回一個(gè)大寫(xiě)的輸入單詞,然后將此函數(shù)應(yīng)有到列表colors中的所有元素。
我們還可以使用匿名函數(shù)lamdba來(lái)配合map函數(shù),這樣可以更加精簡(jiǎn)。
(3)Reduce函數(shù)
當(dāng)需要對(duì)一個(gè)列表進(jìn)行一些計(jì)算并返回結(jié)果時(shí),reduce()是個(gè)非常有用的函數(shù)。舉個(gè)例子,當(dāng)需要計(jì)算一個(gè)整數(shù)列表所有元素的乘積時(shí),即可使用reduce函數(shù)實(shí)現(xiàn)。
它與函數(shù)的最大的區(qū)別就是,reduce()里的映射函數(shù)(function)接收兩個(gè)參數(shù),而map接收一個(gè)參數(shù)。
(4)enumerate函數(shù)
用于將一個(gè)可遍歷的數(shù)據(jù)對(duì)象(如列表、元組或字符串)組合為一個(gè)索引序列,同時(shí)列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在for循環(huán)當(dāng)中。
它的兩個(gè)參數(shù),一個(gè)是序列、迭代器或其他支持迭代對(duì)象;另一個(gè)是下標(biāo)起始位置,默認(rèn)情況從0開(kāi)始,也可以自定義計(jì)數(shù)器的起始編號(hào)。
(5)Zip函數(shù)
用于將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的列表
當(dāng)我們使用zip()函數(shù)時(shí),如果各個(gè)迭代器的元素個(gè)數(shù)不一致,則返回列表長(zhǎng)度與最短的對(duì)象相同。
分享文章:python內(nèi)置加密函數(shù) 加密 python
當(dāng)前網(wǎng)址:http://www.dlmjj.cn/article/dociped.html