내가 ECDSA를 확인하려고 (256) 서명, 나는 그것이 아래 지정된 형식의 공개 키, 원래의 데이터와 서명입니다 할 수있는 유일한 데이터 :InvalidCastException이 확인 서명
string pubKey_ecdsa = "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+noecsW+vdfd8DNo5dsAxU4DOaNt6PGmSCLFo/EvQG4xmVzv464qXvDPIrPN8GtLnubzoa9rtWJD52VlGOpFsA==";
string data_ecdsa = ";\"4399901526945\";\"AAAA-BBBBBBBBB-123456789000\";\"5010112544615\";\"20130802063109143\";";
string signature_ecdsa = @"BEcwRQIgJFwnCvm8lRjlRt+G+f4viJktDYVyOiXUd5BJ0V761eECIQDBTHLjJI7KK3FhczEHjunenYWXylDdW91jbS23EmeznA==";
내가 호출하여 서명을 확인하는 데 탄력이 성을 사용하려고하면
는 :
//Create the public key from string
AsymmetricKeyParameter pubKey = PublicKeyFactory.CreateKey(Convert.FromBase64String(pubKey_ecdsa));
// create byte array from string
byte[] b_signature = Convert.FromBase64String(signature_ecdsa);
ASCIIEncoding encoder = new ASCIIEncoding();
byte[] inputData = encoder.GetBytes(data_ecdsa);
ISigner signer = SignerUtilities.GetSigner("SHA-256withECDSA");
signer.Init(false, pubKey);
signer.BlockUpdate(inputData, 0, inputData.Length);
bool valid = signer.VerifySignature(b_signature);
나는 InvalidCastException
가 나타납니다
Unable to cast object of type 'Org.BouncyCastle.Asn1.DerOctetString'
to type 'Org.BouncyCastle.Asn1.Asn1Sequence'.
다음 줄에
는 :
bool valid = signer.VerifySignature(b_signature);
그래서 뭔가는 서명이 잘못된 것 같다,하지만 난 알아낼 수 없습니다. 아무도 좋은 아이디어로 도울 수 있기를 바랍니다.
그런데이 예제의 제공된 데이터가 수정되었으므로 서명이 false로 평가됩니다.
어떤 버전의 Bouncy Castle을 사용하십니까? –
안녕하세요, BouncyCastle.Crypto.dll, 버전 1.7.4114.6375의 C# 버전입니다. – steve