導航:首頁 > 文檔加密 > python對稱加密通訊

python對稱加密通訊

發布時間:2023-01-17 07:00:52

A. 5-python庫之-paho mqtt通訊

連接調用connect介面,然後調用loop_forever後就開始跑了

connect的第三個參數為mqtt的心跳時間

on_connect 和 on_disconnect 為連接成功和斷開的回掉函數,

添加證書,只需要在調用connect函數之前,添加下面兩條內容即可。

設置賬號密碼,在調用connect函數之前,添加下面一條內容即可。

設置WILL主題,在調用connect函數之前,使用will_set介面設置,添加will主題和will主題的payload

主題的訂閱使用subscribe介面,一般在on_connect回調函數裡面設置

訂閱完主題,我們的目的就是要收到訂閱的數據,所以需要設置接收數據的回調函數on_message
,只要有數據發送過來on_message就會收到。

發布使用publish介面,如下

B. 求python中的愷撒密碼的加密,解密,以及破解的程序

凱撒密碼作為一種最為古老的對稱加密體制,在古羅馬的時候都已經很流行,他的基本思想是:通過把字母移動一定的位數來實現加密和解密。明文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後被替換成密文。例如,當偏移量是3的時候,所有的字母A將被替換成D,B變成E,以此類推X將變成A,Y變成B,Z變成C。由此可見,位數就是凱撒密碼加密和解密的密鑰。
如下代碼是以偏移量為13展開計算的。123

源代碼如下:
sr1="abcdefghijklmnopqrstuvwxyz"sr2=sr1.upper()
sr=sr1+sr1+sr2+sr2
st="The Zen of Python"sResult=""for j in st: if j==" ":
sResult = sResult +" "
continue
i=sr.find(j) if(i>-1):
sResult=sResult+sr[i+13]print sResult12345678910111213

運行結果為:
Gur Mra bs Clguba

C. python3 import Crypto 失敗的解決辦法 (AES對稱加密使用 模塊)

# 先導入所需要的包

pip3 install Crypto

# 再安裝pycrypto

pip3 install pycrypto

from Crypto.Cipher import AES # 就成功了

使用說明,參見:

https://codeghar.wordpress.com/2013/09/06/beginning-aes-with-python3/

D. Python 加密程序

#coding=utf-8

'''''

Description:可逆的加密與解密

Environment:python2.5.x

Author:[email protected]

'''

importos

importsys

classCode(object):

'''''可逆的加密與解密'''

def__init__(self,key="[email protected]"):

self.__src_key=key

self.__key=self.__get_strascii(self.__src_key,True)

defencode(self,value):

'''''加密函數,加密後為一串數字'''

return"%d"%(self.__get_strascii(value,True)^self.__key)

defdecode(self,pwd):

'''''解密函數'''

ifself.is_number(pwd):

returnself.__get_strascii((int(pwd))^self.__key,False)

else:

print'requirenumber.'

defreset_key(self,key):

'''''重新設置key'''

self.__src_key=key

self.__key=self.__get_strascii(self.__src_key,True)

#===============================================================================

#內部調用介面

#===============================================================================

def__get_strascii(self,value,bFlag):

ifbFlag:

returnself.__get_str2ascii(value)

else:

returnself.__get_ascii2str(value)

def__get_str2ascii(self,value):

ls=[]

foriinvalue:

ls.append(self.__get_char2ascii(i))

returnlong("".join(ls))

def__get_char2ascii(self,char):

'''''獲取單個字元的acsii碼值'''

try:

return"%03.d"%ord(char)

except(TypeError,ValueError):

print"keyerror."

exit(1)

def__get_ascii2char(self,ascii):

ifself.is_ascii_range(ascii):

returnchr(ascii)

else:

print"asciierror(%d)"%ascii

exit(1)

def__get_ascii2str(self,n_chars):

ls=[]

s="%s"%n_chars

n,p=divmod(len(s),3)

ifp>0:

nRet=int(s[0:p])

ls.append(self.__get_ascii2char(nRet))

pTmp=p

whilepTmp<len(s):

ls.append(self.__get_ascii2char(int(s[pTmp:pTmp+3])))

pTmp+=3

return"".join(ls)

#================================================================================

#工具介面

#================================================================================

defis_number(self,value):

try:

int(value)

returnTrue

except(TypeError,ValueError):

pass

returnFalse

defis_ascii_range(self,n):

return0<=n<256

defis_custom_ascii_range(self,n):

return33<=n<48or58<=n<126

classUsage(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'],

}

defhelp(self,*k):

strHelp="Usage:pwd[-options][args...]whereoptioninclude:"

strHelp+="""

-?-helpprintthishelpmessage

-k<key_str>-p<pwd_str>

-k<key_str>-t<text_str>"""

printstrHelp

defargs(self,argv_ls):

'''''dispatchcommand'''

#printargv_ls

iflen(argv_ls)<=1orlen(argv_ls)>5:

print'Unrecognizedoption'

return

cmd_dic={}

curr_cmd=''

#controlcommand

fori,vinenumerate(argv_ls[1:]):

forjinself._args_dic.items():

#addcommand

ifvinj[1]andj[0]notincmd_dic:

curr_cmd=j[0]

cmd_dic[curr_cmd]=[]

break

else:

#addargv

ifcmd_dic:

cmd_dic[curr_cmd].append(v)

#execcommand

ifcmd_dic:

self.exec_cmd(cmd_dic)

else:

print'Unrecognizedoption'

defexec_cmd(self,cmd_dic):

'''''execcmd'''

iflen(cmd_dic)==2:

if'arg_p'incmd_dicand'arg_k'incmd_dic

andlen(cmd_dic['arg_p'])==1andlen(cmd_dic['arg_k'])==1:

self._clsWork.reset_key(cmd_dic['arg_k'][0])

printself._clsWork.encode(cmd_dic['arg_p'][0])

return

elif'arg_t'incmd_dicand'arg_k'incmd_dic

andlen(cmd_dic['arg_t'])==1andlen(cmd_dic['arg_k'])==1:

self._clsWork.reset_key(cmd_dic['arg_k'][0])

printself._clsWork.decode(cmd_dic['arg_t'][0])

return

self.help()

if__name__=='__main__':

usage=Usage()

usage.args(sys.argv)

E. python中AES 用ECB模式加密之後為什麼和C#加密之後的結果不一樣

AES是美國國家標准技術研究所NIST旨在取代DES的21世紀的加密標准。 AES的基本要求是,採用對稱分組密碼體制,密鑰長度的最少支持為128、192、256,分組長度128位,演算法應易於各種硬體和軟體實現。1998年NIST開始AES第一輪分析、測試和徵集

F. python rsa模塊---生成公鑰和私鑰的方法

https://blog.csdn.net/six66hao/article/details/81814576
https://blog.csdn.net/whatday/article/details/97617461
https://blog.csdn.net/xiongzaiabc/article/details/88400748
https://blog.csdn.net/zhao3587717/article/details/83111082/

一.
非對稱加密演算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)
對稱加密演算法大家共用一個密鑰

數字簽名: 就是為了證明該信件是確定的人發出的,而不是黑客冒充發出的
eg:
1.鮑勃給蘇珊回信,決定採用"數字簽名"。他寫完後先用Hash函數,生成信件的摘要(digest)。

二.用RSA庫可以生成公鑰和私鑰
到時候把公鑰給前端,後端保存公鑰和私鑰

三.在用戶注冊/登入時,輸入密碼後前端會用JS對密碼進行加密傳送到後端
一般現在對於密碼的加密解密都用RSA進行

G. Python簡單加密操作

加密是將一個明文數據,按照指定的演算法,運算得到一個其他的可以隱藏真實信息的密文數據,這個過程稱為加密;處理的演算法稱為加密演算法;用到的關鍵數據稱為密鑰。

解密是按照制定的演算法和關鍵數據,將一個密文數據進行逆向運算得到的正確的明文數據的過程

如:用戶賬號密碼存儲,此時任何人都不能查看該用戶的明文密碼

1.原始數據
2.編碼(轉換為位元組數據)
3.使用演算法加密
4.利用鹽值更新密文
5.得到加密後的數據

編碼:字元串.encode(編碼名稱)——>位元組數據
解碼:位元組數據.decode(編碼名稱)——>字元串數據

==========================================

H. python文本加密是什麼

python文本加密是Python 提供了諸如 hashlib,base64 等便於使用的加密庫,我們可以藉助異或操作,實現一個簡單的文件加密程序。

通過了解異或操作的性質,加密原理就非常清晰了。

首先將文件轉換成二進制數,再生成與該二進制數等長的隨機密鑰,將二進制數與密鑰進行異或操作,得到加密後的二進制數。

將加密後的二進製程序與密鑰進行異或操作,就得到原二進制數,最後將原二進制數恢復成文本文件。

相關拓展

加密,是以某種特殊的演算法改變原有的信息數據,使得未授權的用戶即使獲得了已加密的信息,但因不知解密的方法,仍然無法了解信息的內容。

加密之所以安全,絕非因不知道加密解密演算法方法,而是加密的密鑰是絕對的隱藏,流行的RSA和AES加密演算法都是完全公開的,一方取得已加密的數據,就算知道加密演算法也好,若沒有加密的密鑰,也不能打開被加密保護的信息。

單單隱蔽加密演算法以保護信息,在學界和業界已有相當討論,一般認為是不夠安全的。公開的加密演算法是給黑客和加密家長年累月攻擊測試,對比隱蔽的加密演算法要安全得多。

盡管加密或為了安全目的對信息解碼這個概念十分簡單,但在這里仍需對其進行解釋。數據加密的基本過程包括對稱為明文的原來可讀信息進行翻譯,譯成稱為密文或密碼的代碼形式。該過程的逆過程為解密,即將該編碼信息轉化為其原來的形式的過程。

以上內容參考 網路-加密

I. 密碼學基礎之對稱加密(一)

就不給定義了,我簡單解釋下,就是我的信息不想讓別人知道,使用 秘鑰(key) 對我的信息進行 加密(encrypt) ,變成鬼符一樣的 秘文(ciphertext) 。別人就算看到了,也無法識別,只有有了秘鑰,把秘文 解密(decrypt) 後才能看懂信息,秘鑰呢?一般人我不告訴他。我的秘鑰是私密信息,所以也叫 私鑰(private key) ,加密和解密用的秘鑰是相同的,所以叫 「對稱加密」 ,也叫 「私鑰加密」

對於明文plaintext,和對稱秘鑰key
加密過程 E(plaintext, key) = ciphertext
解密過程 D(ciphertext, key) = plaintext

對稱加密的分為 分組密碼(block cipher) 流密碼(stream cipher) 兩種類型。本文只介紹分組密碼。

分組密碼是每次只能處理特定長度的一塊(block)數據的一類加解密演算法。AES就是一種分組密碼演算法。AES加密演算法每次可以加密的塊長度是128位(bit)。

ECB模式
使用AES加密演算法ECB模式,每次能加密128位數據,即16個位元組。如果要加密48個位元組內容,我們需要把數據分為3組,每組16個位元組,分別為P1、P2、P3。P1、P2、P3加密後形成的秘文分別為C1、C2、C3,我們把C1、C2、C3依次拼接起來就成為最終的加密結果。

CBC模式

《對稱加密之對稱加密二》正在寫作,會包含分組密碼的更多模式,流密碼及AES的更多知識。

DES加密:舊的加密演算法,NIST規定僅能用於遺留系統和TDEA。(參考文獻[CNS] 3.2章)
TDEA(Triple DEA)加密:很多資料也叫3DES(Triple DES)。(參考文獻[SP800-67])

Python 可以使用 pycrypto 模塊進行AES加解密。安裝 pycrypto 可使用命令 pip install pycrypto 安裝。

下面AES演示第一版,先看下,緊接著就會升級到第二版本。

運行一下,能正常加解密。但是,如果你把要加密的文本,從 aesAlgorithmDemo 改為 hello ,就會運行報錯:

這是因為,AES的分組長度是128位,即16個位元組。有些AES實現,要加密的消息長度不是16個位元組的倍數需要填充。
填充的方法一般是按照PKCS#7填充標准。

如果要數據的長度不是分組的整數倍,需要填充數據到分組的倍數,如果數據的長度是分組的倍數,需要填充分組長度的數據,填充的每個位元組值為填充的長度。PKCS#7支持的分組長度為1到255個位元組。
舉一些例子:
AES的分組長度為16個位元組,不管秘鑰是128位、192位還是256位。如果要加密的數據長度是5個位元組,你需要填充11個位元組,填充的內容位填充的長度0x0b。填充後類似下面表示

如果數據長度是30個位元組,需要填充2個位元組,每個位元組的內容為0x02,如果數據成都恰好為16的倍數,需要填充16個位元組,每個位元組的內容為0x10。

弄明白填充的概念後,我們重寫加解密函數如下:

這樣填充後會不會可其它系統不兼容?不會。一般的AES程序都是支持PKCS#7填充的。

密碼學基礎之RSA與不對稱秘鑰
密碼學基礎系列

[CNS] 《密碼編碼學與網路安全》(第六版)
[SP800-67] NIST Special Publication 800-67 Revision 1, Recommendation for Triple Data Encryption Algorithm (TDEA) Block Cipher, January 2012.
[SSH] OpenSSH CBC模式信息泄露漏洞
[NIST SP 800-57 Part 1 Rev. 4] Recommendation for Key Management, Part 1: General

J. python的加密方式: rsa加密和解密

RSA加密是一種非對稱加密,通常使用公鑰加密,私鑰解密。

生成文件如下圖:

可以將生成的公鑰、私鑰粘貼復制存儲起來,以便使用:

在使用中, 通常會先對數據進行bas64加密, 再對加密後的內容使用rsa加密, 最後對rsa解密後的內容進行bas64解密.

閱讀全文

與python對稱加密通訊相關的資料

熱點內容
ascii碼是編譯的時候用嗎 瀏覽:779
壓縮機感應包可以通用嗎 瀏覽:410
方舟伺服器怎麼發布到搜索列表 瀏覽:270
xml防反編譯 瀏覽:239
數據傳輸加密系統技術方案 瀏覽:842
程序員沒有準備去面試 瀏覽:4
51單片機usb滑鼠 瀏覽:879
qq伺服器的ip地址查詢 瀏覽:112
java仿qq聊天 瀏覽:400
解壓的ipa重新打包 瀏覽:142
程序員那麼可愛vip版 瀏覽:239
程序員怎麼升職 瀏覽:243
圖形化命令按鈕vb 瀏覽:987
vcu盤加密怎麼設置 瀏覽:414
如何加密備份微信聊天記錄 瀏覽:528
安卓手機如何模擬鍵盤 瀏覽:930
查看dns地址命令 瀏覽:767
android錄屏工具 瀏覽:840
成都互動直播系統源碼 瀏覽:955
usb藍牙android 瀏覽:409