首页 编程教程正文

python 3 实现js中JSEncrypt encrypt方法,rsa模块根据字符串公钥生成加密字符串

piaodoo 编程教程 2020-02-22 22:06:55 905 0 python教程

本文来源吾爱破解论坛

# coding=utf-8
import base64
import rsa

__all__ = ['rsa_encrypt']

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

def rsa_encrypt(s, pubkey_str):
    '''
    rsa加密
    :param s:
    :param pubkey_str:公钥
    :return:
    '''
    key = _str2key(pubkey_str)
    modulus = int(key[0], 16)
    exponent = int(key[1], 16)
    pubkey = rsa.PublicKey(modulus, exponent)
    return base64.b64encode(rsa.encrypt(s.encode(), pubkey)).decode()

使用时直接调用rsa_encrypt(s, pubkey_str)方法就好了,第一个参数为待加密字符串,第二个参数为公钥,返回值为加密后的字符串

其中_str2key(s)方法是在https://www.cnblogs.com/masako/p/7660418.html这篇文章的基础上做了细微改动,可能是由于python版本问题,原文章中的代码在python3.7中无法直接使用

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7571.html

搜索