导航:首页 > 文档加密 > 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对称加密通讯相关的资料

热点内容
java仿qq聊天 浏览:398
解压的ipa重新打包 浏览:140
程序员那么可爱vip版 浏览:237
程序员怎么升职 浏览:241
图形化命令按钮vb 浏览:985
vcu盘加密怎么设置 浏览:412
如何加密备份微信聊天记录 浏览:527
安卓手机如何模拟键盘 浏览:930
查看dns地址命令 浏览:767
android录屏工具 浏览:840
成都互动直播系统源码 浏览:955
usb蓝牙android 浏览:409
服务器显示error1什么意思 浏览:710
python代码精简 浏览:460
文件加密了怎么找到了 浏览:196
jellyfin插件怎么选择主服务器 浏览:839
asp用户注册源码 浏览:48
什么是照片压缩文件 浏览:394
java调用js代码 浏览:981
昆山市民app怎么修改身份信息 浏览:780