C#在一台服务器上加密字符串,在另一台服务器上解密"填充无效,无法删除"

时间:2018-01-30 10:18:49

标签: c# encryption cryptography rijndael

尝试加密服务器上的字符串并在另一台机器上解密该字符串,我使用该技术加密在下面链接的另一个线程上找到的字符串 - .NET内置加密(AES) - 然后-MAC(HMAC) Encrypt and decrypt a string

我得到了#34;填充无效且无法删除"错误消息,如果字符串在一台服务器上加密,我尝试在另一台服务器上解密。

我不能在此代码中使用任何nuget包。

我 然后我将IV和Keyfile发送到base64字符串来存储它,将base64字符串传递给应用程序并尝试解密字符串。 如果我在一台机器上执行此过程,这将有效。

  1. 加密字符串并生成IV + Key(或两个密钥对)

  2. 将所有加密密码信息转换为base64 字符串。

  3. 将信息转换回byte []并解密 密码。

    import Hr from 'react-native-hr-component'
    
    //..
    
    <Hr text="Some Text" fontSize={5} lineColor="#eee" textPadding={5} textStyles={yourCustomStyles} hrStyles={yourCustomHRStyles} />
    
  4. 这种测试方法应该有助于澄清我试图实现的步骤。

    使用其他线程中提供的类,是否有人知道我是否可以加密字符串并在其他地方解密而不会出现填充问题错误?

    不包括引用代码的道歉。请在线程Encrypt and decrypt a string

    中找到以下内容

    https://gist.github.com/jbtule/4336842#file-aesgcm-cs

    [TestMethod]
    public void EncryptAString()
    {
        byte[] ba_TestIV = AESThenHMAC.NewKey();
        byte[] ba_TestKey = AESThenHMAC.NewKey();
        string s_EncryptedPassword = AESThenHMAC.SimpleEncrypt("PassOrFailMessage", ba_TestIV, ba_TestKey);
        string s_TestIV = Convert.ToBase64String(ba_TestIV);
        string s_TestKey = Convert.ToBase64String(ba_TestKey);
    
    
    /*Everything Below This Point Is Run From A Different Application Which Is Passed The Three Base64 Strings */
        string s_DecryptedString = AESThenHMAC.SimpleDecrypt(s_EncryptedPassword, Convert.FromBase64String(s_TestIV), Convert.FromBase64String(s_TestKey));
        Assert.IsTrue(s_DecryptedString == "PassOrFailMessage");
    }
    

0 个答案:

没有答案