谁能把下面这段java代码改写成python代码,红包酬谢!

谁能帮忙把下面这段java代码改写成python代码,红包酬谢!

img

这种问题,你直接去问GPT就行了,GPT非常适合做将源代码从一种语言转换成另一种的呆板机械的操作。

我用的这款工具现在完全免费的,你感兴趣可以私我,推给你

不是有这种软件可以直接转吗 试下这个https://www.javainuse.com/java2py

该回答引用chatgpt

在Python中,您可以使用int()函数将十六进制字符串转换为整数。以下是一个示例函数,它将十六进制字符串转换为整数:

def parseHexStr2(hex_str):
    hex_str = hex_str.replace(" ", "")  # 去除空格
    hex_str = hex_str.strip()  # 去除换行符
    if len(hex_str) % 2 != 0:  # 长度必须是偶数
        raise ValueError("Invalid hex string")
    bytes_obj = bytes.fromhex(hex_str)
    return int.from_bytes(bytes_obj, byteorder='big')

这个函数首先将字符串中的空格和换行符去除,然后检查字符串长度是否为偶数。接下来,它使用bytes.fromhex()方法将十六进制字符串转换为字节数组,然后使用int.from_bytes()方法将字节数组转换为整数。

以下是一个使用示例:

hex_str = "48 65 6c 6c 6f 20 57 6f 72 6c 64"
num = parseHexStr2(hex_str)
print(num)  # 输出: 795364956408214089789358404

在上面的示例中,parseHexStr2()函数将十六进制字符串转换为整数,然后将其打印出来。

这是AI生成的,你先应急一下




package System;

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

public class Sysaess {
    private static final byte[] KEY_ = {1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8};
    public final String bm = "UTF-8";
    public String TempStr = null;

    public Sysaess(String sm, String str) {
        TempStr = str;
    }

    public String 0ldStr(String objstr) {
        try {
            IvParameterSpec zeroIv = new IvParameterSpec(KEY_);
            SecretKeySpec key = new SecretKeySpec(TempStr.getBytes(), "AES");
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);
            byte[] encryptedData = cipher.doFinal(objstr.getBytes(bm));
            return new String(parseByte2HexStr(encryptedData));
        } catch (Exception e) {
            return objstr + "找回数据异常[" + e.getMessage() + "]";
        }
    }

    public String NewStr(String objstr) {
        try {
            byte[] byteli = parseHexStr2Byte(objstr);
            IvParameterSpec zeroIv = new IvParameterSpec(KEY_);
            SecretKeySpec key = new SecretKeySpec(TempStr.getBytes(), "AES");
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            cipher.init(Cipher.DECRYPT_MODE, key, zeroIv);
            byte[] decryptedData = cipher.doFinal(byteli);
            return new String(decryptedData, bm);
        } catch (Exception e) {
            return "异常";
        }
    }

    public byte[] parseHexStr2Byte(String hexStr) {
        if (hexStr.length() < 1)
            return null;        byte[] result = new byte[hexStr.length() / 2];
        for (int i = 0; i < hexStr.length() / 2; i++) {
            int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16);
            int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16);
            result[i] = (byte) (high * 16 + low);
        }
        return result;
    }

    public String parseByte2HexStr(byte buf[]) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < buf.length; i++) {
            String hex = Integer.toHexString(buf[i] & 0xFF);
            if (hex.length() == 1) {
                hex = '0' + hex;
            }
            sb.append(hex.toUpperCase());
        }
        return sb.toString();
    }
}

```


from Crypto.Cipher import AES
import binascii

class Sysaess:
    KEY_VI = bytes([1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8])
    bm = "UTF-8"
    TempStr = None

    def __init__(self, sm, str):
        self.TempStr = str

    def OldStr(self, objstr):
        try:
            zeroIv = AES.iv
            key = AES.new(self.TempStr.encode(), AES.MODE_CBC, zeroIv)
            encryptedData = key.encrypt(objstr.encode(self.bm))
            return binascii.b2a_hex(encryptedData).decode()
        except Exception as e:
            return objstr + "找回数据异常[" + str(e) + "]"

    def NewStr(self, objstr):
        try:
            byteMi = binascii.a2b_hex(objstr)
            zeroIv = AES.iv
            key = AES.new(self.TempStr.encode(), AES.MODE_CBC, zeroIv)
            decryptedData = key.decrypt(byteMi)
            return decryptedData.decode(self.bm)
        except Exception as e:
            return "异常"

    def parseHexStr2Byte(self, hexStr):
        if len(hexStr) < 1:
            return None
        result = bytearray(len(hexStr)//2)
        for i in range(len(hexStr)//2):
            high = int(hexStr[i*2:i*2+1], 16)
            low = int(hexStr[i*2+1:i*2+2], 16)
            result[i] = (high * 16 + low)
        return bytes(result)

    def parseByte2HexStr(self, buf):
        sb = []
        for i in range(len(buf)):
            hex = format(buf[i], '02X')
            sb.append(hex)
        return ''.join(sb)

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

GPT给的答复如下:

import os
from Crypto.Cipher import AES
from Crypto.Protocol.KDF import PBKDF2
from Crypto.Random import get_random_bytes
from Crypto.Util import Padding

class Sysaess:
    KEY_VI = b'\x01\x02\x03\x04\x05\x06\x07\x08\x01\x02\x03\x04\x05\x06\x07\x08'

    def __init__(self, key):
        # 生成盐值
        salt = get_random_bytes(16)
        # 使用PBKDF2函数生成密钥
        self.key = PBKDF2(key.encode(), salt, dkLen=32, count=100000)

    def encrypt(self, s):
        aes = AES.new(self.key, AES.MODE_CBC, self.KEY_VI)
        s = Padding.pad(s.encode(), 16)
        return aes.encrypt(s).hex()

    def decrypt(self, s):
        aes = AES.new(self.key, AES.MODE_CBC, self.KEY_VI)
        s = bytes.fromhex(s)
        return Padding.unpad(aes.decrypt(s), 16).decode()

def main():
    # 创建一个 Sysaess 类的实例,并给定一个密钥
    sysaess = Sysaess("hello")
    # 调用类的方法对一些字符串进行加密和解密,并打印结果
    s1 = "Hello, world!"
    e1 = sysaess.encrypt(s1)
    d1 = sysaess.decrypt(e1)
    print(f"原始字符串:{s1}")
    print(f"加密后的字符串:{e1}")
    print(f"解密后的字符串:{d1}")

    s2 = "Python is fun!"
    e2 = sysaess.encrypt(s2)
    d2 = sysaess.decrypt(e2)
    print(f"原始字符串:{s2}")
    print(f"加密后的字符串:{e2}")
    print(f"解密后的字符串:{d2}")

if __name__ == "__main__":
    main()

测试截图

img

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
【第一种翻译结果】
以下是将给定的Java代码转换为相应的Python代码:

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import binascii

class Sysaess:
    KEY_VI = b'\x01\x02\x03\x04\x05\x06\x07\x08\x01\x02\x03\x04\x05\x06\x07\x08'
    bm = "UTF-8"

    def __init__(self, sm, key):
        self.TempStr = key

    def OldStr(self, objstr):
        try:
            zero_iv = self.KEY_VI
            key = bytes(self.TempStr, self.bm)
            cipher = AES.new(key, AES.MODE_CBC, zero_iv)
            encrypted_data = cipher.encrypt(pad(objstr.encode(self.bm), AES.block_size))
            return binascii.hexlify(encrypted_data).decode(self.bm)
        except Exception as e:
            return objstr + "找回数据异常[" + str(e) + "]"

    def NewStr(self, objstr):
        try:
            byte_mi = binascii.unhexlify(objstr)
            zero_iv = self.KEY_VI
            key = bytes(self.TempStr, self.bm)
            cipher = AES.new(key, AES.MODE_CBC, zero_iv)
            decrypted_data = unpad(cipher.decrypt(byte_mi), AES.block_size)
            return decrypted_data.decode(self.bm)
        except Exception as e:
            return "异常"

    @staticmethod
    def parseHexStr2Byte(hexstr):
        if len(hexstr) < 1:
            return None
        result = bytearray()
        for i in range(0, len(hexstr), 2):
            high = int(hexstr[i:i+2], 16)
            result.append(high)
        return bytes(result)

    @staticmethod
    def parseByte2HexStr(buf):
        sb = []
        for b in buf:
            hex_value = hex(b & 0xFF)[2:]
            if len(hex_value) == 1:
                hex_value = '0' + hex_value
            sb.append(hex_value.upper())
        return ''.join(sb)

请注意,这只是将Java代码转换为Python代码的直接翻译,并且在语法和库的使用上做了相应的调整。然而,由于语言之间的差异以及Java和Python的特性不同,可能还需要根据实际需求进行额外的调整和修改。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

这里转换了


from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.primitives import padding
from cryptography.hazmat.primitives.asymmetric import padding as asymmetric_padding
from cryptography.hazmat.backends import default_backend
import binascii

class Sysaess:
    KEY_VI = bytes([1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8])

    def __init__(self, str):
        self.TempStr = str
        self.bm = "UTF-8"

    def OldStr(self, objstr):
        try:
            cipher = Cipher(algorithms.AES(self.TempStr.encode()), modes.CFB(self.KEY_VI), backend=default_backend())
            encryptor = cipher.encryptor()
            padder = padding.PKCS7(128).padder()
            objstr = padder.update(objstr.encode()) + padder.finalize()
            encryptedData = encryptor.update(objstr) + encryptor.finalize()
            return binascii.hexlify(encryptedData).decode()
        except Exception as e:
            return objstr + "找回数据异常[" + str(e) + "]"

    def NewStr(self, objstr):
        try:
            cipher = Cipher(algorithms.AES(self.TempStr.encode()), modes.CFB(self.KEY_VI), backend=default_backend())
            decryptor = cipher.decryptor()
            objstr = binascii.unhexlify(objstr.encode())
            decryptedData = decryptor.update(objstr) + decryptor.finalize()
            unpadder = padding.PKCS7(128).unpadder()
            decryptedData = unpadder.update(decryptedData) + unpadder.finalize()
            return decryptedData.decode(self.bm)
        except Exception as e:
            return "异常"

    @staticmethod
    def parseHexStr2Byte(hexStr):
        if len(hexStr) < 1:
            return None
        result = bytearray(len(hexStr) // 2)
        for i in range(len(hexStr) // 2):
            high = int(hexStr[i * 2], 16)
            low = int(hexStr[i * 2 + 1], 16)
            result[i] = (high * 16 + low)
        return result

    @staticmethod
    def parseByte2HexStr(buf):
        sb = []
        for b in buf:
            hex_val = hex(b)[2:]
            if len(hex_val) == 1:
                hex_val = '0' + hex_val
            sb.append(hex_val.upper())
        return ''.join(sb)


# 示例用法
temp_str = "YourSecretKey"
sysaess = Sysaess(temp_str)
plaintext = "Hello, World!"
encrypted_text = sysaess.OldStr(plaintext)
decrypted_text = sysaess.NewStr(encrypted_text)

print("原始文本:", plaintext)
print("加密后:", encrypted_text)
print("解密后:", decrypted_text)

参考结合GPT4.0、文心一言,如有帮助,恭请采纳。
下面是修改后的代码,期望可以帮助到你:

import base64  
from Crypto.Cipher import AES  
from Crypto.Util.Padding import pad, unpad  
from Crypto.Random import get_random_bytes  
  
class Sysaess:  
    KEY_VI = b'\x01\x02\x03\x04\x05\x06\x07\x08\x01\x02\x03\x04\x05\x06\x07\x08'  
    bm = "UTF-8"  
    TempStr = None  
      
    def __init__(self, sm, str):  
        self.TempStr = str.encode()  # In Python, strings are Unicode by default. We need to convert to bytes.  
  
    def OldStr(self, objstr):  
        try:  
            iv = self.KEY_VI  
            key = self.TempStr  
            cipher = AES.new(key, AES.MODE_CBC, iv)  
            encryptedData = cipher.encrypt(pad(objstr.encode(self.bm), AES.block_size))  
            return base64.b64encode(encryptedData).decode()  # In Python, bytes are not concatenated with strings. We need to convert to string.  
        except Exception as e:  
            return objstr + "找回数据异常[" + str(e) + "]"  
  
    def NewStr(self, objstr):  
        try:  
            byteMi = base64.b64decode(objstr)  # In Python, base64-encoded strings are not concatenated with bytes. We need to convert to bytes.  
            iv = self.KEY_VI  
            key = self.TempStr  
            cipher = AES.new(key, AES.MODE_CBC, iv)  
            decryptedData = unpad(cipher.decrypt(byteMi), AES.block_size)  
            return decryptedData.decode(self.bm)  # In Python, bytes are not concatenated with strings. We need to convert to string.  
        except Exception as e:  
            return "异常"

粘贴可以复制的代码直接转就可以了。

直接问gpt就好了

Java代码转换成python代码得方法


Java代码如何转换成python代码? - 优草派 本文介绍了如何将Java代码转换为Python代码。在分析时,我们从语法、类型、编程风格等多个角度考虑了Java和Python的差异,并介绍了一些工具和技巧,以便有效地转换代码。最后,我们总结了一些关键点,包括语法差异、类型差异、编程风格差异、工具和技巧等。 https://www.ycpai.cn/python/SF2nQ7Qk.html