private static string LianlianpayEncrypt(string req, ICipherParameters public_key, string hmack_key, string version, string aes_key, string nonce) { var base64_hmack_key = RSA_ECB_OAEPWithSHA1AndMGF1Padding.Encrypt(hmack_key, public_key); var base64_aes_key = RSA_ECB_OAEPWithSHA1AndMGF1Padding.Encrypt(aes_key, public_key); var base64_nonce = Convert.ToBase64String(Encoding.UTF8.GetBytes(nonce)); var iv = CreateCtrIv(Encoding.UTF8.GetBytes(nonce)); var encry = AES_CTR_NoPadding.Encrypt(req, aes_key, iv); var data = base64_nonce + "$" + encry; var sign = HMACSHA256.Compute(Encoding.UTF8.GetBytes(data), Encoding.UTF8.GetBytes(hmack_key)); var base64_sign = Convert.ToBase64String(sign); return(version + "$" + base64_hmack_key + "$" + base64_aes_key + "$" + base64_nonce + "$" + encry + "$" + base64_sign); }
private static string LianlianpayEncrypt(string req, AsymmetricKeyParameter public_key, string hmack_key, string version, string aes_key, string nonce) { var b64Hmack_key = RSA_ECB_OAEPWithSHA1AndMGF1Padding.Encrypt(hmack_key, public_key); var b64Aes_key = RSA_ECB_OAEPWithSHA1AndMGF1Padding.Encrypt(aes_key, public_key); var b64Nonce = Convert.ToBase64String(Encoding.UTF8.GetBytes(nonce)); var iv = CreateCtrIv(Encoding.UTF8.GetBytes(nonce)); var encry = AES_CTR_NoPadding.Encrypt(req, aes_key, iv); var message = b64Nonce + "$" + encry; var sign = HMACSHA256.Compute(Encoding.UTF8.GetBytes(message), Encoding.UTF8.GetBytes(hmack_key)); var b64Sign = Convert.ToBase64String(sign); return(version + "$" + b64Hmack_key + "$" + b64Aes_key + "$" + b64Nonce + "$" + encry + "$" + b64Sign); }