from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
from base64 import b64encode
# 讀取私鑰
private_key_data = '''-----BEGIN PRIVATE KEY-----
MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAIL2MCqXNL2tmaFk1N5+60bfvMzxOF8cKXtQPz2bSOktt7e1oWp1imOzOSX+Zdo9DpYLql7w0f2Mk/7QQpDEC1j5vRI1xgap27BUZo8naQxJ55aDM/758nByUVbhBB03BhI1mm66OLv3fYfCncdaJUzqUtBtKHGyCtvn0YuU0RQZAgMBAAECgYANBE9RTGovmDu28QC/hLn5928ap7dErNXqrdU7WF3s32BtYB5FKJ2yvzOk9R5GjN8QRuSOPz2ACCMFpsmW/gVqk3XKA23MufQ5X8lrPKGZnIuwwn/W5drMpuo74DFITJZI964NCBGc9NgKfUtUIjLuXUSB8nmdnH8NCntoNi3qiQJBAN/Hv3I5IT3Eo00X7p9/SG6lMtoQS9SVRKKWFKTaNO8Smtu+D1X7n5FJNiYDJXEoXvJZnm8a+Z+rgOw0C7bK9YMCQQCV0URA7LQSNoRr4kawcBUzohKd4EjkDy4aIXx1973DfLgeZjV+Ot6uKafIjG2o4yBsCADADe/uqX5K56up6DkzAkAwr1JVVVyIBanJcfV2OcjWWZZwnq8AtuDRxnkDTH3LrW6HdBf+CtoyT406Q+D3d2MAssKnRWUdecB4ovIReKJlAkBFn1KQuW+VZzBy0lz3cZ7ot9De/XPiSAusqRMl31OYnUUTG3yQhNsnJMSMNnZfne1bRvzSQ6fUyX+fX7ou43RxAkBRmPUuHVDrO/GKMcZAhI3aX35Qvc/dv/67VBHr4kw2DVgUXsvSQ5L40T/pLwftD8/v63igmryz6nsXXs6SuV4j
-----END PRIVATE KEY-----'''
private_key = RSA.importKey(private_key_data)
# 創建加密器,這裡用私鑰加密
cipher = PKCS1_v1_5.new(private_key)
# 要加密的訊息
message = '20240925165230S820240925142258000001http://c...content-available-to-author-only...1.com:8800/test/54be1965565a4e4a954669154147de86F1727254350424DA050.009558820200001323777'
crypto = b''
for chunk in [message[i:i + 117] for i in range(0, len(message), 117)]:
encrypted_message = cipher.encrypt(chunk.encode('utf-8'))
crypto += encrypted_message
encrypted_base64 = b64encode(crypto)
print(encrypted_base64.decode('utf-8'))
ZnJvbSBDcnlwdG8uUHVibGljS2V5IGltcG9ydCBSU0EKZnJvbSBDcnlwdG8uQ2lwaGVyIGltcG9ydCBQS0NTMV92MV81CmZyb20gYmFzZTY0IGltcG9ydCBiNjRlbmNvZGUKCiMg6K6A5Y+W56eB6ZGwCnByaXZhdGVfa2V5X2RhdGEgPSAnJyctLS0tLUJFR0lOIFBSSVZBVEUgS0VZLS0tLS0KTUlJQ2RRSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NBbDh3Z2dKYkFnRUFBb0dCQUlMMk1DcVhOTDJ0bWFGazFONSs2MGJmdk16eE9GOGNLWHRRUHoyYlNPa3R0N2Uxb1dwMWltT3pPU1grWmRvOURwWUxxbDd3MGYyTWsvN1FRcERFQzFqNXZSSTF4Z2FwMjdCVVpvOG5hUXhKNTVhRE0vNzU4bkJ5VVZiaEJCMDNCaEkxbW02Nk9MdjNmWWZDbmNkYUpVenFVdEJ0S0hHeUN0dm4wWXVVMFJRWkFnTUJBQUVDZ1lBTkJFOVJUR292bUR1MjhRQy9oTG41OTI4YXA3ZEVyTlhxcmRVN1dGM3MzMkJ0WUI1RktKMnl2ek9rOVI1R2pOOFFSdVNPUHoyQUNDTUZwc21XL2dWcWszWEtBMjNNdWZRNVg4bHJQS0dabkl1d3duL1c1ZHJNcHVvNzRERklUSlpJOTY0TkNCR2M5TmdLZlV0VUlqTHVYVVNCOG5tZG5IOE5DbnRvTmkzcWlRSkJBTi9IdjNJNUlUM0VvMDBYN3A5L1NHNmxNdG9RUzlTVlJLS1dGS1RhTk84U210dStEMVg3bjVGSk5pWURKWEVvWHZKWm5tOGErWityZ093MEM3Yks5WU1DUVFDVjBVUkE3TFFTTm9ScjRrYXdjQlV6b2hLZDRFamtEeTRhSVh4MTk3M0RmTGdlWmpWK090NnVLYWZJakcybzR5QnNDQURBRGUvdXFYNUs1NnVwNkRrekFrQXdyMUpWVlZ5SUJhbkpjZlYyT2NqV1daWnducThBdHVEUnhua0RUSDNMclc2SGRCZitDdG95VDQwNlErRDNkMk1Bc3NLblJXVWRlY0I0b3ZJUmVLSmxBa0JGbjFLUXVXK1ZaekJ5MGx6M2NaN290OURlL1hQaVNBdXNxUk1sMzFPWW5VVVRHM3lRaE5zbkpNU01OblpmbmUxYlJ2elNRNmZVeVgrZlg3b3U0M1J4QWtCUm1QVXVIVkRyTy9HS01jWkFoSTNhWDM1UXZjL2R2LzY3VkJIcjRrdzJEVmdVWHN2U1E1TDQwVC9wTHdmdEQ4L3Y2M2lnbXJ5ejZuc1hYczZTdVY0agotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tJycnCgpwcml2YXRlX2tleSA9IFJTQS5pbXBvcnRLZXkocHJpdmF0ZV9rZXlfZGF0YSkKCiMg5Ym15bu65Yqg5a+G5Zmo77yM6YCZ6KOh55So56eB6ZGw5Yqg5a+GCmNpcGhlciA9IFBLQ1MxX3YxXzUubmV3KHByaXZhdGVfa2V5KQoKIyDopoHliqDlr4bnmoToqIrmga8KbWVzc2FnZSA9ICcyMDI0MDkyNTE2NTIzMFM4MjAyNDA5MjUxNDIyNTgwMDAwMDFodHRwOi8vYy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uMS5jb206ODgwMC90ZXN0LzU0YmUxOTY1NTY1YTRlNGE5NTQ2NjkxNTQxNDdkZTg2RjE3MjcyNTQzNTA0MjREQTA1MC4wMDk1NTg4MjAyMDAwMDEzMjM3NzcnCgpjcnlwdG8gPSBiJycKZm9yIGNodW5rIGluIFttZXNzYWdlW2k6aSArIDExN10gZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKG1lc3NhZ2UpLCAxMTcpXToKCWVuY3J5cHRlZF9tZXNzYWdlID0gY2lwaGVyLmVuY3J5cHQoY2h1bmsuZW5jb2RlKCd1dGYtOCcpKQoJY3J5cHRvICs9IGVuY3J5cHRlZF9tZXNzYWdlCgplbmNyeXB0ZWRfYmFzZTY0ID0gYjY0ZW5jb2RlKGNyeXB0bykKcHJpbnQoZW5jcnlwdGVkX2Jhc2U2NC5kZWNvZGUoJ3V0Zi04JykpCiAK