【问题标题】:C# equivalent to Java's Instant class and RsaSHA256Signer class [closed]C# 等效于 Java Instant 类和 RsaSHA256 Signer 类 [关闭]
【发布时间】:2019-10-08 02:43:37
【问题描述】:

我正在尝试将一些 java 源代码转换为 C#。

c#中以下Java类的等价物是什么:

谢谢

【问题讨论】:

  • RsaSHA256Signer 的完全限定名称是什么,因为它不在 Java SE API 中。

标签: java c# java.time.instant


【解决方案1】:

我不是 100% 确定,但可能是以下情况。

  1. RSACryptoServiceProvider

https://blogs.msdn.microsoft.com/shawnfa/2008/08/25/using-rsacryptoserviceprovider-for-rsa-sha256-signatures/ 用于 RsaSHA256Signer

所以代码看起来像这样:

    byte[] data = new byte[] { 0, 1, 2, 3, 4, 5 };
    using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
    {
        byte[] signature = rsa.SignData(data, "SHA256");
        if (rsa.VerifyData(data, "SHA256", signature))
        {
              Console.WriteLine("RSA-SHA256 signature verified");
        }
         else
        {
            Console.WriteLine("RSA-SHA256 signature failed to verify");
        }
    }
  1. java.time 的等效包是 System.DateTime

例如:

Java:

Instant instant = Instant.now();

C#:

DateTime localDate = DateTime.UtcNow;

https://docs.microsoft.com/en-us/dotnet/api/system.datetime.now?view=netframework-4.8

另外,您可以查找Noda Time,这是一个流行的库。

【讨论】:

  • 我建议将DateTime.Now 更改为DateTime.UtcNow,因为Instant.now() 不受系统本地时区的影响,但DateTime.Now 是。
  • 是的,你是对的。你的建议更合适。相应地更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多