我编写了一个简单的函数来在Python中使用RC2加密消息。使用的包是pycrypto;但是结果不正确,代码如下所示
def encrypt_rc2(plain, key):
b_size = ARC2.block_size
# PKCS7 padding
padding_length = b_size - len(plain) % b_size
c_fill = chr(padding_length)
plain += c_fill * padding_length
iv = '\x00' * 8
alg = ARC2.new(key, ARC2.MODE_CBC, iv)
return alg.encrypt(plain)
使用的模式是CBC,IV设置为全零,使用的填充是PKCS7
在我的测试中,输入普通是 51349910000011 ,使用的密钥是 \ x81 \ xda \ x6c \ x63 \ xf2 。
输出(密码)如下所示(打印整数序数)
[96, 106, 49, 42, 52, 195, 126, 196, 158, 199, 213, 105, 66, 217, 81, 69]
预期的密码应该是(使用C#System.Security.Cryptography)
[195, 73, 163, 32, 206, 3, 56, 179, 140, 106, 47, 173, 99, 192, 180, 15]
有人知道代码有什么问题吗?