在将python代码转换为C#的过程中,hmacsha编码成为一个问题

在将python代码转换为C#的过程中,hmacsha编码成为一个问题,c#,python,C#,Python,我熟悉python,对C#非常陌生 我正在尝试将python代码转换为C代码,这并不顺利 以下是我的python代码的一部分: def make_signature(uri, access_key): secret_key = "****" # secret key (from portal or sub account) secret_key = bytes(secret_key, 'UTF-8') method = "POST" message = m

我熟悉python,对C#非常陌生

我正在尝试将python代码转换为C代码,这并不顺利

以下是我的python代码的一部分:

def make_signature(uri, access_key):
    secret_key = "****"     # secret key (from portal or sub account)
    secret_key = bytes(secret_key, 'UTF-8')
    method = "POST"
    message = method + " " + uri + "\n" + timestamp + "\n" + access_key
    message = bytes(message, 'UTF-8')
    signingKey = base64.b64encode(hmac.new(secret_key, message, digestmod=hashlib.sha256).digest())
我试着用这个C代码来转换它:

我发现这两个代码尽管输入相同,但输出却不同


有人能告诉我如何正确转换它吗?

要转换为Base64,您可以使用以下方法:

    public static string Base64Encode(string plainText)
    {
        var plainTextBytes = System.Text.Encoding.ASCII.GetBytes(plainText);
        return System.Convert.ToBase64String(plainTextBytes);
    }
而且要改回来

    public static string Base64Decode(string base64EncodedData)
    {
        var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
        return System.Text.Encoding.ASCII.GetString(base64EncodedBytes);
    }
我正在使用
RichTextBox
进行此示例:

richTextBox1.Text=Base64Encode(richTextBox1.Text),转换为Base64

richTextBox1.Text=base64解码(richTextBox1.Text),从Base64转换

您可以将
ASCII
编码更改为
UTF-8
,或Visual Studio提供的任何
编码:)

您不必使用
公共静态字符串
,只需将代码取出并放入按钮或
菜单项

现在,在你提问之前,这里:

    public static string Base64Encode(string plainText)
    {
        var plainTextBytes = System.Text.Encoding.ASCII.GetBytes(plainText);

        var 1base64 = System.Convert.ToBase64String(plainTextBytes);

        var 2base64 = System.Text.Encoding.ASCII.GetBytes(1base64);

        return System.Convert.ToBase64String(2base64); //This is the double encryption :)
    }

我希望这对您有所帮助:)

您是否正在尝试将Base64转换为字符串,反之亦然?我看到了你的python代码。如果你愿意的话,我会发布一个从Base64转换到Base64的答案,用C#:)是的,我正在尝试这样做。事实上,python代码已经被证明运行良好,因此这是基本事实。那么,您想让我向您展示如何在C#中实现它吗?我现在就发布答案Yep@Momoro非常感谢advance@Fildor多亏了你的建议,我才得以通过授权!!:D非常感谢!但现在我面对另一个问题。。。;(感谢您的快速回答,我会尝试一下,稍后再报告:)没问题!:)结果如何,@Jinhoon Jeong?如果进展顺利,您可以将此问题标记为已回答:)我非常感谢您在@Momoro上的努力,但我的问题似乎不是如何转换Base64,而是如前所述将Base64转换两次(应该是一次)。实际上,我有C#代码。我为你更新了我的答案(如果这是你想要的!)
    public static string Base64Encode(string plainText)
    {
        var plainTextBytes = System.Text.Encoding.ASCII.GetBytes(plainText);

        var 1base64 = System.Convert.ToBase64String(plainTextBytes);

        var 2base64 = System.Text.Encoding.ASCII.GetBytes(1base64);

        return System.Convert.ToBase64String(2base64); //This is the double encryption :)
    }