java中的一些方法转python3

这篇博客记录了将Java中的BigInteger方法、随机加密字符生成以及SHA-256加密转换为Python实现的过程。涉及到的关键技术包括:Python的`secrets`模块用于生成安全的随机数,`hashlib`库进行SHA-256哈希计算,以及使用`base64`进行编码。通过这些转换,实现了与Java代码等效的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

爬虫碰到几个参数是java生成的,现在将其转为python测试。随笔记录下

 BigInteger方法转为python实现参考此文章:Rewriting Java BigInteger function in python - Stack Overflow

 java实现

// client_id
String client_id = String.format("%x", new BigInteger(String.format("%s#%s", serial_number, str2).getBytes()));

python实现

def get_client_id(origin):
    origin_encode = origin.encode()
    b = bytearray(origin_encode)
    bigint = 0
    for byte in b:
        bigint <<= 8
        bigint |= byte

    bigint_x = "%x" % bigint
    return bigint_x

java实现随机生成加密字符

// code_verifier
byte[] bArr = new byte[32];
new SecureRandom().nextBytes(bArr);
String code_verifier = Base64.encodeToString(bArr, 11);
System.out.println(code_verifier);

python实现随机加密字符( 本质是用os.urandom(nbytes)方法然后通过base64转为字符串 ), 官方文档:secrets --- 生成管理密码的安全随机数 — Python 3.10.8 文档

import secrets

code_verifier = secrets.token_urlsafe(32)

java对字符串进行SHA-256加密

String code_challenge = Base64.encodeToString(MessageDigest.getInstance("SHA-256").digest(code_verifier.getBytes()), 11);

python对字符串进行SHA-256加密

import hashlib


# 写法1
code = hashlib.sha256(verifier.encode()).digest()
code = base64.urlsafe_b64encode(code).rstrip(b'=').decode('ascii')
print(code)

# 写法2
mDigest = hashlib.sha256()
mDigest.update(verifier.encode("UTF-8"))
code = mDigest.digest()
code = base64.urlsafe_b64encode(code).rstrip(b'=').decode('ascii')
print(code)

python后面通过base64方法转字符串参考secrets模块中token_urlsafe方法进行处理

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值