PIV 준수 스마트 카드에서 활성 카드 인증을 수행하려고합니다. 자세한 내용은 부록 A.2 (this document)를 참조하십시오.. NET에서 PKCS # 1 v1.5로 데이터를 인코딩하는 방법
관련 X.509 인증서의 공개 키가 있습니다. 카드에 임의의 데이터를 보내야합니다.이 데이터는 개인 키로 서명 한 다음 공개 키로 서명을 확인해야합니다.
내가 서명 한 문서의 예는 서명하기 위해 보내는 데이터가 "PKCS # 1 v1.5 서명 채우기 스키마에 따라 인코딩 됨"이라는 것을 나타냅니다. 그런 임의의 데이터를 어떻게 인코딩합니까? 데이터 패딩은 RSA 서명 프로세스의 일부라고 생각했습니다.
// Generate random data
byte[] randomData = new byte[128];
Random random = new Random();
random.NextBytes(randomData);
// Hash the random data
SHA1Managed sha1 = new SHA1Managed();
byte[] hash = sha1.ComputeHash(randomData);
// Send the hash to the Smart Card and get back signed data
byte[] signature = SendToSmartCardForSignature(hash);
// Verify the data and the signature match using the public key
RSACryptoServiceProvider rsa = smartCardCertificate.PublicKey;
bool verified = rsa.VerifyData(randomData, CryptoConfig.MapNameToOID("SHA1"), signature);
// verified is false...why?
굉장합니다. 나는 그것을 작동 시키지만 약간의 혼란이있다. 나는 이것을 정리하기 위해 이것을 구현하려고 노력할 것이다. 감사. – Ben