将RIJNDAEL 256函数从.Net转换为Python

将RIJNDAEL 256函数从.Net转换为Python,python,vb.net,encryption,rijndael,Python,Vb.net,Encryption,Rijndael,有人能帮我转换这个代码吗 我尝试使用以下代码生成RIJNDAEL256函数: EncryptRJ256(“lkirwf897+22#bbtrm8814z5qq=498j5”,“741952hheeyy66#cs!9hjv887mxx7@8y“,“填充字符串到块大小长度。”) 公共函数EncryptRJ256(ByVal prm_密钥作为字符串,ByVal prm_iv作为字符串,ByVal prm_文本作为字符串加密)作为字符串 Dim s As String=prm_text_to_encry

有人能帮我转换这个代码吗

我尝试使用以下代码生成RIJNDAEL256函数:

EncryptRJ256(“lkirwf897+22#bbtrm8814z5qq=498j5”,“741952hheeyy66#cs!9hjv887mxx7@8y“,“填充字符串到块大小长度。”)
公共函数EncryptRJ256(ByVal prm_密钥作为字符串,ByVal prm_iv作为字符串,ByVal prm_文本作为字符串加密)作为字符串
Dim s As String=prm_text_to_encrypt
Dim管理2作为新的Rijndael管理{
.Padding=PaddingMode.zero,
.Mode=CipherMode.CBC,
.BlockSize=256
}
暗流作为新的内存流
Dim stream2作为新的加密流(stream,managed2.CreateEncryptor(Encoding.ASCII.GetBytes(prm_密钥),Encoding.ASCII.GetBytes(prm_iv)),CryptoStreamMode.Write)
Dim bytes As Byte()=Encoding.ASCII.GetBytes(s)
stream2.Write(字节,0,字节.长度)
stream2.FlushFinalBlock()
返回Convert.tobase64字符串(stream.ToArray)
端函数
我需要加密字符串的输出如下:

Dv0Y/AFXdFMlDrcldFCu8v5o9zAlLNgyM+vO+PFeSrpO8Ve82mdUcc4rkzp9afDYc75NmkSd4mdflt38kceOdA==
加垫的绳子,长度为块大小
我想出了这个,但输出是无效的。可能是因为填充错误,但我不知道如何修复:

从rijndael.cipher.crypt导入新
从rijndael.cipher.blockcipher导入模式\u CBC
导入base64
填充=b''
def r_垫(有效负载,块大小=32):
返回有效负载+(块大小-长度(有效负载)%块大小)*填充
键='LKIRWP897+22#bbtrm8814z5qq=498j5'
IV='741952hheeyy66#cs!9hjv887mxx7@8y'
plain_text=“按块大小长度填充的字符串。”
rjn=新(键,模式\ CBC,IV,块大小=32)
encd=rjn.encrypt(r_pad(纯文本))
data=base64.b64编码(encd)
打印(数据)
rjn=新(键,模式\ CBC,IV,块大小=32)
data=base64.b64解码(数据)
decd=rjn.decrypt(r_pad(数据))
打印(decd)
这是输出:

Dv0Y/AFXdFMlDrcldFCu8v5o9zAlLNgyM+vO+PFeSrqWdzP1S1cumviFiEjNAjz5njnMMC9lfxsBl71x5y+xCw==
长度为块大小的填充线⌐┘N┤«╞二甲苯╜:æC┬♣╬Q┤▼«U_♦â☻ìr

我真傻!以下是解决我问题的方法:

from rijndael.cipher.crypt import new
from rijndael.cipher.blockcipher import MODE_CBC
import base64

PADDING = b'\x00'

def pad(payload, block_size=32):
    return payload + (block_size - len(payload) % block_size) * PADDING

def un_pad(payload):
    return payload.replace(PADDING, '')

KEY = 'lkirwf897+22#bbtrm8814z5qq=498j5'
IV = '741952hheeyy66#cs!9hjv887mxx7@8y'
plain_text = "A padded string to BLOCKSIZE length."

rjn = new(KEY, MODE_CBC, IV, blocksize=32)
encd = rjn.encrypt(pad(plain_text))
data = base64.b64encode(encd)
print(data)

rjn = new(KEY, MODE_CBC, IV, blocksize=32)
data = base64.b64decode(data)
decd = rjn.decrypt(un_pad(data))
print (decd)