寻找将一些代码从c#移植到python的帮助。很久以前,有些代码是用来加密我们数据库中的一个列的。问题是代码是用c#编写的,我不熟悉这种语言。主要是python,scala程序员。
通过阅读代码,我相信代码是使用rc2作为他们的算法。如这两行所示
var rc2Csp = new RC2CryptoServiceProvider();
var encryptor = rc2Csp.CreateEncryptor(_Keys[keyOffset % numKeys], _Vs[keyOffset % numIVs]);我不明白的是密码是如何存储的,有一个键值对,如下所示
(为了安全起见,以下代码段中的实际值已经更改)
private static readonly byte[][] _Keys =
{
new byte[] {0x7a,0xca,0x7a,0xca,0x7a,0xca,0x7a,0xca,0x7a,0xca,0x7a,0xca,0x7a,0xca,0x7a,0xca}
}
private static readonly byte[][] _Vs =
{
new byte[] {0xf3,0x1c,0xf3,0x1c,0xf3,0x1c,0xf3,0x1c}
}我不知道如何在python中使用那个键值对,以便密码库能够解码字符串。
以下是我到目前为止没有工作的地方
from Crypto.Cipher import AES
import Crypto.Cipher.AES
from binascii import hexlify, unhexlify
key = unhexlify(b'0x7a,0xca,0x7a,0xca,0x7a,0xca,0x7a,0xca,0x7a,0xca,0x7a,0xca,0x7a,0xca,0x7a,0xca')
IV = unhexlify('0xf3,0x1c,0xf3,0x1c,0xf3,0x1c,0xf3,0x1c')
plaintext1 = unhexlify('6bc1bee22e409f96e93d7e117393172a')
cipher = AES.new(key,AES.MODE_CBC,IV)
ciphertext = cipher.encrypt(plaintext1)
hexlify(ciphertext)发布于 2022-03-03 07:11:32
您需要找到支持RC2加密的Python库。也许你可以试试那个:https://github.com/0xEBFE/RC2-python/blob/master/rc2.py
创建类型为RC2的类并将键传递给它。然后调用具有3个参数的加密/解密方法:
encrypt/decrypt
的任何其他
在C#代码中,_Keys和_Vs数组都包含多个字节数组(您只留下一个字节,但它们被声明为字节,因此您需要复制提取右键和IV的逻辑。
例如,
_Keys[keyOffset % numKeys]这里有数字参数keyOffset,代码将选择带索引的键
https://stackoverflow.com/questions/71332839
复制相似问题