日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python rsa加密长度_python RSA加密最新(RSA/ECB/PKCS1Padding)

發布時間:2023/12/15 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python rsa加密长度_python RSA加密最新(RSA/ECB/PKCS1Padding) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

遇到一個 java 的RSA/ECB/PKCS1Padding 加密 要改成python的

網上搜一堆不靠譜的,沒辦法只能自己動手寫一份了

中間遇到一個ERROR:

OverflowError: 458 bytes needed for message, but there is only space for 117

遇到問題解決它

上代碼:

import rsa

import base64

from Crypto.PublicKey import RSA

from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5

#rsa加密,通常對加密結果進行base64編碼

def handle_pub_key(key):

"""

處理公鑰

公鑰格式pem,處理成以-----BEGIN PUBLIC KEY-----開頭,-----END PUBLIC KEY-----結尾的格式

:param key:pem格式的公鑰,無-----BEGIN PUBLIC KEY-----開頭,-----END PUBLIC KEY-----結尾

:return:

"""

start = '-----BEGIN PUBLIC KEY-----\n'

end = '-----END PUBLIC KEY-----'

result = ''

# 分割key,每64位長度換一行

divide = int(len(key) / 64)

divide = divide if (divide > 0) else divide + 1

line = divide if (len(key) % 64 == 0) else divide + 1

for i in range(line):

result += key[i * 64:(i + 1) * 64] + '\n'

result = start + result + end

return result

def get_param(message, public_key):

"""

處理長消息 不經過 這個處理回報下面error

OverflowError: 458 bytes needed for message, but there is only space for 117

:param message 消息

:param public_key 公鑰

:return:

"""

pubkey = rsa.PublicKey.load_pkcs1_openssl_pem(public_key)

crypto = b''

divide = int(len(message) / 117)

divide = divide if (divide > 0) else divide + 1

line = divide if (len(message) % 117 == 0) else divide + 1

for i in range(line):

crypto += rsa.encrypt(message[i * 117:(i + 1) * 117].encode(), pubkey)

crypto1 = base64.b64encode(crypto)

return crypto1.decode()

if __name__ == '__main__':

message = "infodownloadermiddlewareshttpcompressionHttpCompressionMiddleware"*10

public_key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClsqQiK5KMBO88nf2CE6I5aGJQX9jTXorDveudfSKts2/5i/ipCLo68rl4gsPYwzjP5ef5IJTK0Xdzrrfkn5d2GCVA7n/jN3rlqjfSy1w2D4JqMUtqEhRQr7KfofZbZBnPOooiepRht+W0D9rIAceLLD5UPpstZ4lPCW2t/PG0hQIDAQAB"

public_key = handle_pub_key(public_key)

param = get_param(message, public_key)

print(param)

success!

用了記得點贊!留個言更好!

總結

以上是生活随笔為你收集整理的python rsa加密长度_python RSA加密最新(RSA/ECB/PKCS1Padding)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。