首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#到python RC2加密/解密

C#到python RC2加密/解密
EN

Stack Overflow用户
提问于 2022-03-03 06:17:45
回答 1查看 69关注 0票数 0

寻找将一些代码从c#移植到python的帮助。很久以前,有些代码是用来加密我们数据库中的一个列的。问题是代码是用c#编写的,我不熟悉这种语言。主要是python,scala程序员。

通过阅读代码,我相信代码是使用rc2作为他们的算法。如这两行所示

代码语言:javascript
复制
var rc2Csp    = new RC2CryptoServiceProvider();
var encryptor = rc2Csp.CreateEncryptor(_Keys[keyOffset % numKeys], _Vs[keyOffset % numIVs]);

我不明白的是密码是如何存储的,有一个键值对,如下所示

(为了安全起见,以下代码段中的实际值已经更改)

代码语言:javascript
复制
 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中使用那个键值对,以便密码库能够解码字符串。

以下是我到目前为止没有工作的地方

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2022-03-03 07:11:32

您需要找到支持RC2加密的Python库。也许你可以试试那个:https://github.com/0xEBFE/RC2-python/blob/master/rc2.py

创建类型为RC2的类并将键传递给它。然后调用具有3个参数的加密/解密方法:

encrypt/decrypt

  • mode - MODE_CBC或来自C#代码

的任何其他

  • IV -IV的数据

在C#代码中,_Keys和_Vs数组都包含多个字节数组(您只留下一个字节,但它们被声明为字节,因此您需要复制提取右键和IV的逻辑。

例如,

代码语言:javascript
复制
_Keys[keyOffset % numKeys]

这里有数字参数keyOffset,代码将选择带索引的键

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71332839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档