首页
学习
活动
专区
圈层
工具
发布

to C#
EN

Stack Overflow用户
提问于 2021-05-10 12:14:46
回答 1查看 51关注 0票数 1

我有一个创建签名的工具。我正在寻找在. net core 2.1中等效的代码。

Java代码: sign(currentdate,'some text','SHA1WithRSA')

代码语言:javascript
复制
public String sign(String date, String subjectId, String algorithm){
    Signature rsa = Signature.getInstance(algorithm);
    rsa.initSign(this.getPrivate());
    rsa.update(subjectId.getBytes());
    rsa.update(date.getBytes());
    String signature = new String(Base64.getEncoder().encode(rsa.sign()));
    return signature;
}

public PrivateKey getPrivate() {
    String privateKeyPEM = "<This is the private key string";

    byte[] encoded = Base64.getDecoder().decode(privateKeyPEM);
    KeyFactory kf = KeyFactory.getInstance("RSA");
    PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(encoded);
    return kf.generatePrivate(spec);
}

建议使用或不使用第三方工具生成上述.net core 2.1等效代码的方法。

EN

回答 1

Stack Overflow用户

发布于 2021-05-10 14:04:07

这是我使用Portable.BouncyCastle库的工作。

代码语言:javascript
复制
 private string GetSign(string data)
        {
            using (var rsa = new RSACryptoServiceProvider())
            {
                var privateKey = new StringBuilder();
                privateKey.AppendLine("-----BEGIN RSA PRIVATE KEY-----");
                privateKey.AppendLine("private key as string");
                privateKey.AppendLine("-----END RSA PRIVATE KEY-----");

                var pem = new PemReader(new StringReader(privateKey.ToString()));
                var keyPair = (AsymmetricCipherKeyPair)pem.ReadObject();
                var privateKeyParameters = (RsaPrivateCrtKeyParameters)keyPair.Private;
                var rsaParameters = DotNetUtilities.ToRSAParameters(privateKeyParameters);

                rsa.ImportParameters(rsaParameters);
                var sign = rsa.SignData(Encoding.UTF8.GetBytes(data), new HashAlgorithmName("SHA1") /*pass your algorithm*/,
                    RSASignaturePadding.Pkcs1);

                return Convert.ToBase64String(sign);
            }
        }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67464700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档