• 请不要在回答技术问题时复制粘贴 AI 生成的内容
unco020511
V2EX  ›  程序员

这段 Python 代码用 Java 怎么实现

  •  
  •   unco020511 · Dec 3, 2021 · 3880 views
    This topic created in 1803 days ago, the information mentioned may be changed or developed.

    楼主确实没接触过 python

    def getHash(code, challenge):
    byteCode = to_byte_array(code)
    byteChallenge = to_byte_array(challenge)
    b = bytes(byteCode + byteChallenge)
        return sha512(b).hexdigest().upper()
    
    
    def to_byte_array(hexString: str):
        result = []
        for i in range(0, len(hexString), 2):
            result.append(int(hexString[i : i + 2], 16))
    
        return result
    
    12 replies  •  2021-12-05 14:56:05 +08:00
    szq8014
    szq8014
    Dec 3, 2021
    1
    org.apache.commons.codec.digest.DigestUtils.sha512Hex(code + challenge) ?
    pcbl
    pcbl
    Dec 3, 2021 via Android❤️2
    2
    总感觉这 python 代码写的没有 python 味
    yangyaofei
    yangyaofei
    Dec 3, 2021
    3
    一般 Python 程序猿肯定不会写这种 hash......

    c/c++ 的倒是有可能
    yanbo92
    yanbo92
    Dec 3, 2021 via iPhone
    4
    sha512b 第一眼会忽略 512
    unco020511
    unco020511
    OP
    Dec 3, 2021
    5
    @yangyaofei #这是抓的某个国外 app 的包,不是自己写的
    Juszoe
    Juszoe
    Dec 3, 2021
    6
    这段代码逻辑挺简单的,一楼是正解。
    核心思想就是 sha512(code + challenge)
    unco020511
    unco020511
    OP
    Dec 3, 2021
    7
    @szq8014 好像还是不太一样,我看上面代码不是做了什么每两个转一个 16 进制吗
    gleox
    gleox
    Dec 4, 2021
    8
    to_byte_array()函数是把 16 进制字符串转换为 byte 数组。一个字节编码时对应的是 2 个 16 进制字符,所以解码 16 进制字符串的时候会截取 2 个字符转换为 1 个字节。
    iyaozhen
    iyaozhen
    Dec 4, 2021
    9
    怎么感觉这个 py 代码是 java 转过去的,java 才常操作 byte array
    szq8014
    szq8014
    Dec 4, 2021
    10
    @Juszoe
    @unco020511 里面的 code + challenge 需要再 Hex 转成 byte 一下, sha512 也支持直接传入 byte[]
    Juszoe
    Juszoe
    Dec 4, 2021
    11
    @unco020511 #7 是每两个转成 16 进制,你既然读懂了写成 java 不是难事吧
    例如“FA12” -> 0xFA12
    2i2Re2PLMaDnghL
    2i2Re2PLMaDnghL
    Dec 5, 2021
    12
    每两个字符被当作 Hex 转成 byte
    "3132333435363738" -> b"12345678"
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4768 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 03:16 · PVG 11:16 · LAX 19:16 · JFK 22:16
    ♥ Do have faith in what you're doing.