我有一个同时进行加密和解密的 DLL,但是在客户端站点上,当字符串被加密然后发送到另一台机器以通过 Web 服务解密时,解密失败。
目前我已经测试过目标机器上的 DLL 可以很好地加密和解密字符串。我想做的是从两台机器(不同版本)中获取 DLL,将它们加载到 IronPython 脚本中,让一个 DLL 加密,另一个 DLL 解密。我知道我可以将它们都加载到 clr.References 中,因为它们因版本而异,但是在那之后我如何区分它们呢?
这是我现在使用单个 DLL 的内容:
from Some.Dll import SecurityUtils
from System.Text.Encoding import UTF8
import clr
class Codec:
def __init__(self, publicKey):
self.decryptedBytes = None
self.encryptedString = None
self.publicKey = publicKey
def encrypt(self, text):
#dir = os.path.dirname(__file__);
#dir = os.path.join(dir, '..');
#dir = os.path.join(dir, 'oldsystem');
#dir = sys.path.append(dir)
#clr.AddReference(r'Some.Dll')
textBytes = UTF8.GetBytes(text)
self.encryptedString = SecurityUtils.Encrypt_RSA(textBytes, self.publicKey)
def decrypt(self):
self.decryptedBytes = SecurityUtils.Decrypt_RSA(self.encryptedString)
def getDecryptedString(self):
return UTF8.GetString(self.decryptedBytes)