nuallan酒店是北京哪个酒店(nuo酒店北京)

最近有很多读者朋友对Nuallan酒店是北京哪家酒店有疑问。有网友整理了相关内容,希望能回答你的疑惑。关于nuo酒店北京,这个网站已经为你找到了问题的答案,希望对你有所帮助。

由于众所周知的原因,中国的主要邮箱和聊天 App 监控您接收和发送的信息。如果你需要传递一些绝密内容,显然你需要加密你的内容。

但是你怎么告诉别人加密密码呢?打电话说?如果是一对一的沟通,这种方式真的没问题。

但如果现在是单向联系,很多人会给你发信息。如果你想让所有联系你的人在发送信息之前都加密信息,只有你能解密呢?如果只使用一个密码, A 发给你的消息可能会被发送 B 偷看。你需要和每个人设置自己的特殊密码吗?

为了解决这个问题,我们可以使用不对称加密。不对称加密的加密钥和解密钥是分开的。每个人都能看到加密密钥。每个人都可以向您发送相同的加密密钥加密信息。但只有你手中的解密钥才能解开这个密文。

RSA 算法是一种非对称加密算法。

该算法非常可靠,密钥越长,破解起来就越困难。根据已披露的文献,目前破解最长的RSA密钥是768个二进制位。也就是说,长度超过768位的密钥无法破解(至少没有人公开宣布)。所以可以认为1024位RSA密钥基本安全,2048位密钥极其安全。 ——《RSA算法原理(一)

RSA 算法中的加密钥,我们称之为公钥(Public Key),解密钥,称为私钥(Private Key)。您只需保管好私钥即可。想给你发信息的人可以把公钥放在博客上, 只需用公钥加密信息发送给您即可。

在 Python 我们怎么用? RSA 加密解密算法怎么样?第三方库可以安装,称为rsa:

pip install rsa复制代码

安装完成后,我们试着用中文交密:今晚8点在老地方见面.

第一步是创建公钥和私钥

import rsapublic_key, private_key=rsa.newkeys(1024)复制代码

我们现在打印这两个密钥,如下图所示:

nuallan酒店是北京哪个酒店(nuo酒店北京)

数字1024表示生成1024位密钥。也可以写2048或4096……,只要是2的n这边

且 n>4即可。也可以写2048或4096……,只要是2的n这边

且 n>4.位数越多越安全,但加密解密速度越慢。

生成的密钥是 Python 对象,送给别人不方便。因此,我们可以将其转换为pem格式:

public_key_str=public_key.save_pkcs1()private_key_str=private_key.save_pkcs()复制代码

如下图所示:nuallan酒店是北京哪个酒店(nuo酒店北京)

现在,我们得到了两个字符串。这是 pem 公钥和私钥的格式,公钥BEGIN RSA PUBLIC KEY开头,短;私钥BEGIN RSA PRIVATE KEY开头,长。这是 pem 公钥和私钥的格式,公钥BEGIN RSA PUBLIC KEY开头,短;私钥BEGIN RSA PRIVATE KEY开头,长。

其中,保管好私钥,不要泄露。你可以用公钥 QQ 发送给他人的任何通信工具,如微信邮箱短信等。

密钥只需生成一次,以后就不需要执行上述代码了。

有了公钥和私钥,我们就可以开始发送信息了。

注意以下代码的使用 pem 公钥和私钥的格式。

我们首先使用公钥加密信息。

public_key_str='''—–BEGIN RSA PUBLIC KEY—–MIGJAoGBAIWmLWCvb3kSJ7 ys9JZ/rqqgIcYwf9bcEl9/BQd4XnsSHHoyAyG bPI1YRGaAnmKLGeEcgrJE1sQIqIMdeHLHVTWUNh4Wr8o 1fyTrlpK0fCNmLb3qRabsgwRxoSEflXAchBLlHWQoHkaMjcfR7zTFe5I/ogx5gtSX0TQCSmLANAgMBAAE=—–END RSA PUBLIC KEY—–'''msg='今晚8点在老地方见面;'public_key=rsa.PublicKey.load_pkcs1(public_key_str.encode())encryptd_msg=rsa.encrypt(msg.encode(), public_key)复制代码

加密后,我们得到了一个 bytes 类型数据如下图所示:

nuallan酒店是北京哪个酒店(nuo酒店北京)

请注意,这里的这个 bytes 模型数据是不可能的.decode()成字符串。那怎样才能把它发给别人呢?

这时,你可以在它的外层一层覆盖 base64编码,把他变成字符串:

import base64encryptd_msg_str=base64.b64encode(encryptd_msg).decode()复制代码

如下图所示:

nuallan酒店是北京哪个酒店(nuo酒店北京)

现在,你可以把密文写下来

RzwfgCFUhLKYiXM7frOcBL7VyLIh1M7pJ8Gpaz9j7HksjYqsw8DzreFziBNi/S0GGciIfWsvr5pUvYFA7wacOjHqluZ7KVx1oEOdg/x6wyeb1UdQ9cR6PzMlgpidpzUknhsGIAmxjtt6EUL tJVUbzfXHgs5wETxFZQtRHLcKag=

通过任何公共渠道发送给他人。这就是密文。这就是密文。

拿到密文后,拥有私钥的人如何解密?也很简单:

import rsaimport base64encryptd_msg_str='''RzwfgCFUhLKYiXM7frOcBL7VyLIh1M7pJ8Gpaz9j7HksjYqsw8DzreFziBNi/S0GGciIfWsvr5pUvYFA7wacOjHqluZ7KVx1oEOdg/x6wyeb1UdQ9cR6PzMlgpidpzUknhsGIAmxjtt6EUL tJVUbzfXHgs5wETxFZQtRHLcKag='''private_key_str='''—–BEGIN RSA PRIVATE KEY—–MIICXwIBAAKBgQCFpi1gr295Eie/srPSWf66qoCHGMH/W3BJffwUHeF57Ehx6MgMhvmzyNWERmgJ5iixnhHIKyRNbECKiDHXhyx1U1lDYeFq/KPtX8k65aStHwjZi296kWm7IMEcaEhH5VwHIQS5R1kKB5GjI3H0e80xXuSP6IMeYLUl9E0AkpiwDQIDAQABAoGAYNu2N0PtfcjylbNlLyWZvp6i10XSEsap8hkj/1BIgJwFRMh3cty/StRaKar862 qPk9Yg8EAZjv16nAZjRcVQ031/F57FGR3JdZ43fuT/no0gV mEIc72ypNuhUlM9iccyhEq0xX4eixex3nUALBcPY17ElhvaD8cDZoW2QGFAECRQCHR4RHmgOzoyuMWnov7/WetV8Eqxy1/XQOkvSTWEv6Gyc1vlc/xsRGLwXiUt0BFoOnMRCOAQJwjxSnEbbRzey3YdzX4QI9APzqPCqiEZ4eNnh8F7eOmQYSRurx2b5eyEg3zrVgJHCNOE1i8uidT4mLBx4nfIwV8/ttw7TjzvhQtnBtrQJEaAzyCcDEqB8RF9tfsA95dKE8fHLAmppf8fXGeK6pga3w8r18jmlr/i c7v dTYDrsmVivla4casbz4UogSdKs6JqIwECPGkUdO0Nqx4z1VPX0w7Lq15vZ5Gj7GEBBlui/Do1eM5ejj7w1pW5DlvKLKnlpASb9mPHZiGY6NwYxMQPfQJEGg5vG TN7G4PxbCzeInxxIScpmDE8TBPixrIy9qM/cjbExcc1vCiR8 Kbhr/RhYveaGuKIKaXrVBhzQJZDYd8298mmA=—–END RSA PRIVATE KEY—–'''private_key=rsa.PrivateKey.load_pkcs1(private_key_str.encode())encryptd_msg=base64.b64decode(encryptd_msg_str.encode())msg=rsa.decrypt(encryptd_msg, private_key).decode()print(msg)复制代码

运行效果如下图所示:

nuallan酒店是北京哪个酒店(nuo酒店北京)

RSA 加密对加密内容(明文)有长度限制。因为最后的密文中会有11篇 bytes 内容用于存储加密相关元信息,因此对于1024位密钥,可加密的明文长度为1024因为最后的密文中会有11篇 bytes 内容用于存储与加密相关的元信息,因此对于1024位密钥,可加密的明文长度为1024-8-11=117

bytes。

如何计算字符串的字节长度?可使用以下代码:

msg='今晚8点在老地方见面;'print(len(msg.encode())复制代码

运行效果如下图所示:

nuallan酒店是北京哪个酒店(nuo酒店北京)

这意味着8个汉字加1个数字长度为25bytes(因为在 Python 里面,一个汉字占3bytes,数字和字母占1bytes,

3?8+1=25)

如果要发送长字符串,需要先将字符串转换成 bytes 类型数据,然后根据117 bytes 一组分成多组,分别对每组进行加密。8+1=25)

如果要发送长字符串,需要先将字符串转换成 bytes 类型数据,然后根据117 bytes 一组分成多组,分别加密每组。解密时,密钥位数/8bytes一组先切分密文,然后逐一解密,最后拼出明文 bytes 之后的类型数据.decode()转换成字符串。让我们先实现加密代码:

def encrypt(msg, public_key): msg_bytes=msg.encode() encryptd_msg=b'' chunk_size=len(msg_bytes) // 117 1 for chunk_index in range(chunk_size 1): chunk=msg_bytes[chunk_index * 117: (chunk_index 1) * 117]encryptd_msg =rsa.encrypt(chunk, public_key) encryptd_msg_str=base64.b64encode(encryptd_msg).decode() return encryptd_msg_str复制代码

在这个代码中,我们首先将明文转换为 bytes 类型数据后,切片。这里有可能对应一个中文的三个 bytes 从中切开。这里有可能对应一个中文的三个 bytes 从中切开。但影响不大。以117bytes 加密一个明文块。加密后生成的 bytes 型数据拼接成长字符串,然后整体使用 Base64进行编码。最后,将编码生成的密文发送给他人。如下图所示:

nuallan酒店是北京哪个酒店(nuo酒店北京)

我们在这里生成的密文是:

}

K2Tb9tDQPXBiuCBuWxOR9zBTbDSN2WaF+n+P2RUA9CHdIKvIHvqfMZ60xTsJ7UqZlB4ykzu/ccsTEmp8vqiVaJSSwg5TgDYLdPmk5/6leZaBW4BqyJ2g0PcyCcUvhjxc7P4AIC6MKYZ+74qTgm+Pf8qnY/riOeEZUuxoq0KaFZQOpvGpwnAgpCad8a6MJ7TbyZpepkZr+GbFDdbmegrA6HN9zCIw30c4g0RCiD01PwerUtbK9YXr/aO8hrFEim8bWDos3bpNrQtk8ST4fM9OczXKEoTSuv+f+Ue2s1YFJ00tAyD4GF8QeZ5mUc2ydNyovkvEfhwhy1eOcI/HQQZn2DPxLb3gB4tgE/Hoo4Xblj8ZWpeMe5BrAdT4Dk1qduOJ/A3RnfvhEbojwx30pEU+JipW4AqCPxK26Q+WsYyqVCBM29vWWgxttthxBidpM0GYII1OIfZvWG8GAAMPvotTwrdGOF/Nk355qLlwiHJhsjz0uN0p9PjyUY+xHobDrmuggBHejM69PwelnG5ubxjhBoqKtbBttU4IWfDZq+d3LZdhwZMp2PsXkSzu+IIgpAn0+F/5bZkRAv8XTAv1YFnYLwJI9vyXfMIyoo4wcqDpNmJrMoaW0hvpJ8jMPna0lI9/Up2JO8GRhq+C+pgeM37OUE70UGrqw1R25yO8Y60of69HqfdFgLalhD7egJ42gRt9Lman7dsokWrpySp6Tq7jFJ/h/OL2Kma8Tqeodd1B0/bINNBkK2hb5EIq7cu6xEd5LevieYllEw0LNK03aWERMfkIuOSabzDfn1kedZnK4PlZ+DiXaoe8uUlAlfZsWNBNV94C3+Ji/a1jYk+ZEUZMxA==

接下来我们来编写解密程序:

def decrypt(encryptd_msg_str, private_key): encryptd_msg=base64.b64decode(encryptd_msg_str.encode()) chunk_size=len(encryptd_msg) // 128 msg_bytes=b'' for chunk_index in range(chunk_size): chunk=encryptd_msg[chunk_index * 128: (chunk_index + 1) * 128] msg_bytes +=rsa.decrypt(chunk, private_key) return msg_bytes.decode()复制代码

在解密程序中,我们先把 Base64编码的字符串解码为 bytes 型的数据,然后以128bytes 为一组进行拆分。分别对每一组进行解密。再把每次解密生成的 bytes 型数据拼接。最后把拼接完成的数据使用.decode()转换为字符串。

特别要注意,对每一块密文,在解密完成以后不能直接.decode()。因为它末尾可能只有半个中文,直接转字符串会导致报错,必需先拼接完解密后的所有 bytes 数据,再转成字符串。更多关于 bytes 型数据切片的问题,请参阅我以前的公众号:一日一技:Python 的 bytes 型数据的迭代特征一文。

解密程序运行效果如下图所示:

nuallan酒店是北京哪个酒店(nuo酒店北京)

大家注意,如果你的密钥是2048位的,那么加密时一个明文会以245bytes 一组先切分再加密;解密时,密文会以256bytes 一组先切分再解密。最后,大家如果有任何不希望被众所周知的组织看到的信息想发送给我,可以使用下面这个公钥对信息进行加密,然后把密文发送给我:

—–BEGIN RSA PUBLIC KEY—–MIIBCgKCAQEApQSWvu/C5NH3aEGMqFTeiJrXbOM2Qi+uXc+FiApEWDYdyEMPQWKHexJiFoyAa+JJ8OfmkTIVktkx0VqEcvfjfKxrGPk9JuQ6WL4/UUYs8/F+2ArDnMyRlWcqaf1658QjrWYbFHxQ0eEOZ6RcRKME3p431mDMqeDpQtqlDyeMKGp7hSv5gnpdQjlyl1Jgoa4lAzyPv66IM1PD207qjLFCTY0udiWSFDiUlvgXcBHDypUqWGOUUSLEvVXIE+KYNbR2g23iRa1IJGSCEz1xllt7QpygCwwd+vVGD8zaCHOEE7Fex0K/ybhiNvdt19qgxE8aIwGt0ln71DNpn+yZsq4fIwIDAQAB—–END RSA PUBLIC KEY—–复制代码

密钥是2048位。

最后,小编想说:我是一名python开发工程师,

整理了一套最新的python系统学习教程,想要这些资料的可以关注私信小编“01”即可(免费分享哦)希望能对你有所帮助

主题测试文章,只做测试使用。发布者:艾迪号,转转请注明出处:https://www.cqaedi.cn/baike/44902.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年 1月 19日 下午6:10
下一篇 2023年 1月 19日 下午7:25

相关推荐

  • 公司交社保一个月要交多少钱(公司交社保一个月要交多少钱2022)

    社保月月缴,可到底交多少一直搞不懂,今天就帮你好好算一算,不再糊里糊涂啦!社保缴费标准 = 缴费基数 × 缴费比例,具体各险种算法如下: 养老保险 缴费基数:为职工上月工资总额,最高为上年度全省全口径城镇单位就业人员月平均工资 6338 元的 3 倍(即 19014 元),最低为深圳市最低月工资标准 2200 元。 缴费比例:深户与非深户职工个人缴费比例都为…

    2023年 4月 30日
    00
  • 何赛飞演过的电视剧大全(何赛飞演过的电视剧大全住别人的房子)

    最近有很多读者朋友对何赛飞演过的电视剧大全有疑问。有网友整理了相关内容,希望能回答你的疑惑。这个网站已经为你找到了问题的答案,希望对你有所帮助。 No.1 4月11日是著名演员何赛飞58岁生日。在此,娱乐娱乐视祝贺赛飞女士生日快乐! 说起电影《五女拜寿》,大家可能都不太熟悉,但说起电视剧《大宅门》,很多观众还记得。而这两部作品,对何赛飞来说,意义重大。 何赛…

    百科大全 2023年 2月 17日
    00
  • 情约今生()

    最近,许多读者对今生的爱情有疑问。有网友整理了相关内容,希望能回答你的疑惑。关于,这个网站已经为你找到了问题的答案,希望对你有所帮助。 0 羞愧地说,我不是粉丝,更不用说职业影评人了。偶尔刷电影,纯粹是为了打发无聊的时间,或者消磨失眠的夜晚。 而且,我之所以能选择一部电影,无非是评分高或者时间长短(1.5小时以内),真的能让我从头到尾仔细看完电影,扳指可数。…

    百科大全 2023年 3月 31日
    00
  • mbit:开启智能时代的关键引擎

    “mbit:开启智能时代的关键引擎”是一篇关于人工智能技术的文章。全文介绍了mbit技术的重要性和应用领域,以及其在推动智能时代发展中的关键作用。通过深度学习和大数据分析,mbit技术能够实现智能化的决策和创新,为各行各业带来巨大的变革和发展机遇。文章还提到了mbit技术在医疗、交通、金融等领域的应用案例,展示了其在提高效率、降低成本、改善生活质量等方面的潜…

    百科大全 2023年 7月 5日
    00
  • 车主死亡后车辆过户手续流程,逝者车辆过户手续流程及费用?

    逝者车辆过户手续流程及费用? 一、人死了车辆怎么过户 1、原车主不幸去世的话,继承人需要带着死亡证明到公证处做公证。 2、然后带着死亡证明、公证处的证继承公证书、继承人的身份证明、行驶证、机动车登记证书、开车到所属车管分所办理过户手续。 二、办理流程 1、来到过户大厅后,出示相关材料领取一张《XX市旧机动车买卖合同》,双方各自填写资料。填好后,拿上以上所有的…

    百科大全 2023年 7月 27日
    00

站长QQ

7401002

在线咨询: QQ交谈

邮件:7401002@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信