微慑信息网

python3下 jsencrypt 加密算法.

python3

#coding:utf-8
import base64
import 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

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()

def main():
    pubkey_str='''-----BEGIN PUBLIC KEY-----' + '\r' +
                        'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqeG/yKkDJffoEgM0UUhDAObsb' + '\r' +
                        'wpzejBzm/XDCKdbfcjtknSKseomkQWtHdn686l8n/xb82cWHWMvYjHHnWuqcOMPC' + '\r' +
                        'v8JHZHfybKakEDNVbR2Ms8OhPZJGzS/V8G4H+QXRWGkNqJcTHR/w8yxGIxiz4YRQ' + '\r' +
                        'BhyFxRnWU0ZwpsigFQIDAQAB' + '\r' +
                        '-----END PUBLIC KEY-----'''
    print   (rsa_encrypt('123',pubkey_str))
if __name__ == '__main__':
    main()

 

 

赞(0) 打赏
转载请附本站链接,未经允许不得转载,,谢谢:微慑信息网-VulSee.com » python3下 jsencrypt 加密算法.

评论 抢沙发

微慑信息网 专注工匠精神

微慑信息网-VulSee.com-关注前沿安全态势,聚合网络安全漏洞信息,分享安全文档案例

访问我们联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册