微慑信息网

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

 

 

本文标题:python3下 jsencrypt 加密算法.
本文链接:
(转载请附上本文链接)
https://vulsee.com/archives/vulsee_2021/0108_13460.html
转载请附本站链接,未经允许不得转载,,谢谢:微慑信息网-VulSee.com » python3下 jsencrypt 加密算法.
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

微慑信息网 专注工匠精神

访问我们联系我们