python 爬虫rsa加密

在爬虫分析的时候,经常在网页上看到如下格式的rsa公钥

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDC7kw8r6tq43pwApYvkJ5laljaN9BZb21TAIfT/vexbobzH7Q8SUdP5uDPXEBKzOjx2L28y7Xs1d9v3tdPfKI2LR7PAzWBmDMn8riHrDDNpUpJnlAGUqJG9ooPn8j7YNpcxCa1iybOlc2kEhmJn5uwoanQq+CA6agNkqly2H4j6wIDAQAB

对于rsa算法的公钥,我们了解到,主要有两个信息:模数(modulus)和指数(exponent)

  只有有这两个信息,我们便可以用以下代码段生成公钥,然后使用rsa库对数据进行加密

接下来用代码实现

def str2key(s):
    # 对字符串解码
    b_str = base64.b64decode(s)

    if len(b_str) < 162:
        return False
    hex_str = ''

    # 按位转换成16进制
    for x in b_str:
        h = hex(x)[2:]
        h = h.rjust(2, '0')
        hex_str += h

    # 找到模数和指数的开头结束位置
    m_start = 29 * 2
    e_start = 159 * 2
    m_len = 128 * 2
    e_len = 3 * 2

    modulus = hex_str[m_start:m_start + m_len]
    exponent = hex_str[e_start:e_start + e_len]

    return modulus, exponent

我对上面那个rsa公钥进行解码

得到结果

('c2ee4c3cafab6ae37a7002962f909e656a58da37d0596f6d530087d3fef7b16e86f31fb43c49474fe6e0cf5c404acce8f1d8bdbccbb5ecd5df6fded74f7ca2362d1ecf033581983327f2b887ac30cda54a499e500652a246f68a0f9fc8fb60da5cc426b58b26ce95cda41219899f9bb0a1a9d0abe080e9a80d92a972d87e23eb', '010001')

这2个参数也就是莫属和指数

结下来就是对数据进行加密,

    # 加密
def to_para(key,message):
    message = str(message).encode()
    modulus = int(key[0], 16)
    exponent = int(key[1], 16)
    rsa_pubkey = rsa.PublicKey(modulus, exponent)

    crypto = rsa.encrypt(message, rsa_pubkey)
    b64str = base64.b64encode(crypto)
    return b64str

返回的结果就是加密后的参数

我们对一些数据进行加密

  s = hashlib.md5("MCX00023".encode()).hexdigest()
    #
  a = to_para(key,'1')
  print(a)

我对结果进行打印

b'TpisN9WMesup6aU0pbpomiNM3rr4LKoZBoupw9okObXRrCEYZy9ASGQhicbm7dW5oRMwQUgm1R7sD+36cmSg4EoTe61zyraWh6Jg/XLwZrCYuF8dIYw0VNM4CJE5f3ea6PBwDbkROzgU8hmJApiP/YE+T5pebeTBBKmVEuq0Jy4='

然后就可以开心的爬虫了。。。。

参考https://www.cnblogs.com/masako/p/7660418.html

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值