C# 在纯.Net(无PPEncrypt.exe)中创建PayPal加密按钮的最干净方法是什么

C# 在纯.Net(无PPEncrypt.exe)中创建PayPal加密按钮的最干净方法是什么,c#,encryption,paypal,e-commerce,C#,Encryption,Paypal,E Commerce,经过数周的艰苦工作,我尽可能多地了解了X509证书和PayPal(动态)加密按钮,我正在挥舞白旗寻求帮助 首先,以下是我尝试过的内容。 我用贝宝的网站支付代码样例(WrNeWON,如下图),端到端的成功,但我不打算使用这个C++库,因为它依赖于OpenSSL库来执行加密(对于按钮)。李> 我也和BouncyCastle玩过,但这似乎是另一种依赖 尝试使用mmc.exe管理单元将包含可导出密钥的.pfx构建到Windows证书存储中--此站点正在Azure上运行,因此此选项也已禁用 在高层,通话应

经过数周的艰苦工作,我尽可能多地了解了X509证书和PayPal(动态)加密按钮,我正在挥舞白旗寻求帮助

首先,以下是我尝试过的内容。

  • 我用贝宝的网站支付代码样例(WrNeWON,如下图),端到端的成功,但我不打算使用这个C++库,因为它依赖于OpenSSL库来执行加密(对于按钮)。李>
  • 我也和BouncyCastle玩过,但这似乎是另一种依赖
  • 尝试使用mmc.exe管理单元将包含可导出密钥的.pfx构建到Windows证书存储中--此站点正在Azure上运行,因此此选项也已禁用
  • 在高层,通话应该是…

    var sStage = ""; //blank for production, otherwise, "sandbox"
    var ppe = new PayPalEncryptor(sPrivKeyFile, sCertFile,sPPCertFile, "<passwordIfNeeded>");
    
    string encrypted = ppe.Encrypt(cmdTxt, myCertFileName, myKeyFileName, payPalCertFileName);
    
    if (!string.IsNullOrWhiteSpace(encrypted))
    {
        if ( File.Exists( sOutputFile ) )
            File.Delete( sOutputFile );
                StreamWriter OutStream = new StreamWriter(sOutputFile, false, Encoding.ASCII);
                if (OutStream != null) 
                {
    
                    OutStream.Write( @"<form action=""https://www." );
                    OutStream.Write( sStage );
                    OutStream.WriteLine( @"paypal.com/cgi-bin/webscr"" method=""post"">" );
    
                    OutStream.WriteLine(@"<input type=""hidden"" name=""cmd"" value=""_s-xclick"">");
    
                    OutStream.Write( @"<input type=""image"" src=""https://www." );
                    OutStream.Write( sStage );
                    OutStream.WriteLine( @"paypal.com/en_US/i/btn/x-click-but23.gif"" border=""0"" name=""submit"" alt=""Make payments with PayPal - it's fast, free and secure!"">" );
    
                    OutStream.Write( @"<input type=""hidden"" name=""encrypted"" value=""" );
                    OutStream.Write( sEnc );
                    OutStream.WriteLine( @""">" );
                    OutStream.WriteLine( @"</form>" );
                    OutStream.Close();
                }
            }
    
    StackOverflow上的一些项目很有帮助,但解决方案似乎在较低级别上存在问题

    编辑:如果您使用过PayPal的PPEncrypt(w/OpenSSL)并能正常工作,请尝试纯.Net解决方案(无C++);我相信加密输出应该与PPEncrypt输出相同——但我不是绝对肯定

    任何帮助都将不胜感激。

    其他我研究过的东西
    RSACryptoServiceProvider rsaCsp = LoadCertificateFile(privateKeyFilePath);