相关疑难解决方法(0)

如何使用RSA和SHA256与.NET签署文件?

我的应用程序将采用一组文件并对其进行签名.(我不是要尝试签署程序集.)有一个.p12文件,我从中获取私钥.

这是我试图使用的代码,但我得到了一个System.Security.Cryptography.CryptographicException "Invalid algorithm specified.".

X509Certificate pXCert = new X509Certificate2(@"keyStore.p12", "password");
RSACryptoServiceProvider csp = (RSACryptoServiceProvider)pXCert.PrivateKey;
string id = CryptoConfig.MapNameToOID("SHA256");
return csp.SignData(File.ReadAllBytes(filePath), id);
Run Code Online (Sandbox Code Playgroud)

根据这个答案,它无法完成(RSACryptoServiceProvider不支持SHA-256),但我希望可以使用不同的库,如Bouncy Castle.

我是新手,我发现Bouncy Castle非常混乱.我正在将一个Java应用程序移植到C#,我必须使用相同类型的加密来签名文件,所以我坚持使用RSA + SHA256.

我怎么能用Bouncy Castle,OpenSSL.NET,Security.Cryptography或其他我没有听说过的第三方库来做到这一点?我假设,如果它可以在Java中完成,那么它可以在C#中完成.

更新:

这是我从poupou的anwser链接中得到的

        X509Certificate2 cert = new X509Certificate2(KeyStoreFile, password");
        RSACryptoServiceProvider rsacsp = (RSACryptoServiceProvider)cert.PrivateKey;
        CspParameters cspParam = new CspParameters();
        cspParam.KeyContainerName = rsacsp.CspKeyContainerInfo.KeyContainerName;
        cspParam.KeyNumber = rsacsp.CspKeyContainerInfo.KeyNumber == KeyNumber.Exchange ? 1 : 2;
        RSACryptoServiceProvider aescsp = new RSACryptoServiceProvider(cspParam);
        aescsp.PersistKeyInCsp = false;
        byte[] signed = aescsp.SignData(File.ReadAllBytes(file), "SHA256");
        bool isValid …
Run Code Online (Sandbox Code Playgroud)

.net c# openssl cryptography bouncycastle

43
推荐指数
6
解决办法
8万
查看次数

服务应用程序的Google oAuth 2.0(JWT令牌请求)

我正在尝试为此处描述的服务帐户实施Google oAuth 2:在UnityScript上使用https://developers.google.com/accounts/docs/OAuth2ServiceAccount(或C# - 这无关紧要,因为它们都使用相同的Mono .NET类).

我在这里找到了类似的主题:C#中是否有JSON Web Token(JWT)示例? web-token-jwt-example-in-c但我仍然没有成功.

首先,我已生成标题和声明集(就像在谷歌文档中一样)

var header: String = GetJWTHeader();
var claimset: String = GetJWTClaimSet();
Run Code Online (Sandbox Code Playgroud)

结果是(为清楚起见,用新行分隔):

{ "ALG": "RS256", "典型": "智威汤逊"}

{ "ISS": "425466719070-1dg2rebp0a8fn9l02k9ntr6u5o4a8lp2.apps.googleusercontent.com"

"范围":" https://www.googleapis.com/auth/prediction ",

"aud":" https://accounts.google.com/o/oauth2/token ",

"EXP":1340222315,

"IAT":1340218715}

Base-64编码方法:

public static function Base64Encode(b: byte[]): String {
    var s: String = Convert.ToBase64String(b);
    s = s.Replace("+", "-");
    s = s.Replace("/", "_");
    s = s.Split("="[0])[0]; // Remove any trailing '='s
    return s;
}

public static function Base64Encode(s: String): String { …
Run Code Online (Sandbox Code Playgroud)

c# oauth oauth-2.0 jwt google-oauth

15
推荐指数
1
解决办法
1万
查看次数

尝试通过 API 密钥授权访问 Google BigQuery

我尝试通过此请求通过 REST API 从我的网络服务器访问 BigQuery,例如:

https://www.googleapis.com/bigquery/v2/projects/project%3Aid/queries?fields=rows&key= {YOUR_API_KEY}

作为 {YOUR_API_KEY},我使用来自 Google API 控制台的服务器应用程序的 API 密钥,但我收到“401 Unauthorized”

在没有用户交互进行身份验证的情况下,从服务器执行此请求的正确方法是什么?

oauth-2.0 google-bigquery

5
推荐指数
2
解决办法
3282
查看次数