Lưu ý rằng tôi sử dụng SHA512 nhưng SHA256 sẽ làm việc với các ví dụ dưới đây:
"thuật toán không hợp lệ theo quy định" Đã cho tôi mãi mãi để tìm ra và tôi đã cố gắng thực tế tất cả mọi thứ. Đạo cụ cho Gonzalo Gallotti để đăng liên kết tới đoạn mã giúp tôi. Tôi nhận xét mã của tôi để hiển thị những gì từng bước đang làm. Chú ý: mã này sẽ không làm việc mà không có một giấy chứng nhận được tạo ra đúng được đăng dưới mẫu mã:
public void GetCertificate() {
// Get the Machine Cert Store
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
string alg = CryptoConfig.MapNameToOID("SHA512");
// Open the cert store
store.Open(OpenFlags.ReadWrite);
// Loop through each certificate within the store
foreach (X509Certificate2 myCert in store.Certificates)
{
// Get the certificate we are looking for
if (myCert.IssuerName.Name.Contains("CN=YourSite"))
{
// Check if the certificate has a private key
if (myCert.HasPrivateKey)
{
// Get your custom signature as a string
string mySignature = GetSignatureString();
// Convert signature to byte array
byte[] originalData = Encoding.UTF8.GetBytes(mySignature);
// Create RSA provider from private key
RSACryptoServiceProvider rsaProvider = (RSACryptoServiceProvider)myCert.PrivateKey;
// Sign the signature with SHA512
byte[] signedSignature = signedSignature = rsaProvider.SignData(originalData, alg);
if (rsaProvider.VerifyData(originalData, alg, signedSignature))
{
// Signature is verified Do Stuff
}
else
{
throw new Exception("The data does not match the signature.");
}
}
}
}
}
Tiếp - Giấy chứng nhận đã được SHA512 và sử dụng một (Cryptographic Service Provider) CSP đó là SHA512 Có khả năng. Dưới đây là danh sách các CSP và khả năng của chúng. Nếu bạn tìm SHA512, bạn sẽ tìm thấy "Nhà cung cấp mã hóa AA của Microsoft nâng cao và AES". Theo mặc định tạo ra các chứng chỉ không sử dụng này (ít nhất là trong Windows), do đó bạn phải xác định nó khi bạn tạo chứng chỉ.
Tạo khóa riêng và giấy chứng nhận - bước này sẽ hỏi bạn những câu hỏi, tiểu bang, khu vực vv vv
openssl req -x509 -nodes -sha512 -newkey rsa:2048 -keyout 512key.pem -out 512cert.pem -days 3650
Tạo tập tin PFX để nhập khẩu vào cửa hàng chứng chỉ của bạn bằng cách sử dụng Microsoft Enhanced Provider RSA và AES Cryptographic:
openssl pkcs12 –export –in 512cert.pem –inkey 512key.pem –CSP “Microsoft Enhanced RSA and AES Cryptographic Provider” –out 512pfx.pfx
Giá trị của 'id' là gì? – dtb
Tôi đã cập nhật câu hỏi với giá trị của id. – scott