Python RSA加密 公有指数+模数生成公钥 进行nopadding模式(填充数全部为0)的加密,每次结果一样


import rsa

 
class Encrypt(object):
    def __init__(self,e,m):
        self.e = e
        self.m = m
 
    def encrypt(self,message):
        mm = int(self.m, 16)
        ee = int(self.e, 16)
        rsa_pubkey = rsa.PublicKey(mm, ee)
        crypto = self._encrypt(message.encode(), rsa_pubkey)
        return crypto.hex()
 
    def _pad_for_encryption(self, message, target_length):
        message = message[::-1]
        max_msglength = target_length - 11
        msglength = len(message)
 
        padding = b''
        padding_length = target_length - msglength - 3
 
        for i in range(padding_length):
            padding += b'\x00'
 
        return b''.join([b'\x00\x00',padding,b'\x00',message])
 
    def _encrypt(self, message, pub_key):
        keylength = rsa.common.byte_size(pub_key.n)
        padded = self._pad_for_encryption(message, keylength)
 
        payload = rsa.transform.bytes2int(padded)
        encrypted = rsa.core.encrypt_int(payload, pub_key.e, pub_key.n)
        block = rsa.transform.int2bytes(encrypted, keylength)
 
        return block
 
if __name__ == "__main__":
	m = '86584afb2a8d053ff3bbe054c628521334b40a1e9f0a33308fc95fe8eea227d822a5ea45cfad9bd1c5f89fdb46c5180bfc20f44202fa2d474260e6bca9ffa2d221365f142cd7a022fa8aead20a33f3991447fb085d84b144154f3f728a69166320b3c23745ac464b081add448753f0c8a8c0afe0ef9fbcb7a10710339421c0d7'
	e = '010001'
	message = '12345678'
 
	en = Encrypt(e,m)
	print(en.encrypt(message))
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值