2016-09-21 2 views
0

발급자가 CN = My_root_CA이고 인증서가 비 루트 인증서 인 경우에만 "키 컨테이너"의 값과 일치하는 정규식을 찾으려고합니다. 나는이 CN=My_Root_CA((.|\n)*?)Non-root Certificate((.|\n)*?)Key Container =(.*\b)인증서를 고유하게 식별하기위한 정규식

시도

 ================ Certificate 3 ================ 
    Serial Number: 5471f66c066334ab48285398b0f24b7e 
    Issuer: CN=My_Root_CA, O=Experian, OU=Hunter, L=Sofia, S=CA, C=BG 
    NotBefore: 20/09/2016 15:48 
    NotAfter: 20/09/2024 15:48 
    Subject: CN=192.168.127.107 
    Non-root Certificate 
    Cert Hash(sha1): 46 92 41 60 56 36 32 fa bb 82 f2 45 0b 80 37 c4 28 15 e4 ca 
    Key Container = 52668461-19b4-4fef-80d6-5982ff702c3b 
    Unique container name: 0893f8f220ed765fabe249818ff664b9_bba0a089-1c2b-49c8-9f49-e4b211a91a55 
    Provider = Microsoft Strong Cryptographic Provider 
    Encryption test passed 

여러 유사 인증서가 있기 때문에, 고유 인증서와 일치하는 수행 할 수 그러나 이것은 우리가있는 경우 정확하게 일치하지 않는

================ Certificate 1 ================ 
    Serial Number: b4b81124ff17b6af4eb18053cd9fecd5 
    Issuer: CN=My_Root_CA, O=Experian, OU=Hunter, L=Sofia, S=CA, C=BG 
    NotBefore: 20/09/2016 15:48 
    NotAfter: 20/09/2024 15:48 
    Subject: CN=My_Root_CA, O=Experian, OU=Hunter, L=Sofia, S=CA, C=BG 
    Signature matches Public Key 
    Root Certificate: Subject matches Issuer 
    Cert Hash(sha1): 8c 47 dd 5a 74 47 3a 74 e1 2a c4 de 6f 95 35 04 f6 2d d4 8a 
    Key Container = 25ea8612-7fd3-4504-97f8-d9150e6bfd63 
    Unique container name: 4e3f7aa1fb469fd4cb7b184d188059be_bba0a089-1c2b-49c8-9f49-e4b211a91a55 
    Provider = Microsoft Strong Cryptographic Provider 
    Encryption test passed 

    ================ Certificate 2 ================ 
    Serial Number: XXXXXXXX 
    Issuer: CN=TEST TEST FIND Root 
    NotBefore: 18/08/2015 16:16 
    NotAfter: 18/09/2017 16:26 
    Subject: CN=TEST CA 
    CA Version: V9.0 
    Certificate Template Name (Certificate Type): SubCA 
    Non-root Certificate 
    Template: SubCA 
    Cert Hash(sha1): 55 1b 22 8c c9 eb 25 58 25 3f 00 67 a3 6e 68 b1 62 43 de 75 
    No key provider information 
    Cannot find the certificate and private key for decryption. 
    Encryption test passed 

    ================ Certificate 3 ================ 
    Serial Number: 5471f66c066334ab48285398b0f24b7e 
    Issuer: CN=My_Root_CA, O=Experian, OU=Hunter, L=Sofia, S=CA, C=BG 
    NotBefore: 20/09/2016 15:48 
    NotAfter: 20/09/2024 15:48 
    Subject: CN=192.168.127.107 
    Non-root Certificate 
    Cert Hash(sha1): 46 92 41 60 56 36 32 fa bb 82 f2 45 0b 80 37 c4 28 15 e4 ca 
    Key Container = 52668461-19b4-4fef-80d6-5982ff702c3b 
    Unique container name: 0893f8f220ed765fabe249818ff664b9_bba0a089-1c2b-49c8-9f49-e4b211a91a55 
    Provider = Microsoft Strong Cryptographic Provider 
    Encryption test passed 
+0

Java입니까? 현재 코드를 공유하십시오. 정규식은 길거나 비효율적이지만 충분히 좋을 수 있습니다. –

+0

개미입니다. \t \t \t \t \t \t \t \t \t doreto

답변

1

네거티브 미리보기 어설 션을 사용해야합니다.

CN=My_Root_CA(?:(?!={4,})[\s\S])*?Non-root Certificate(?:(?!={4,})[\s\S])*?Key Container\s+=\s+(.*\b) 

(?:(?!={4,})[\s\S])*? -> 4 부호를 넘지 않습니다.

DEMO

+0

게으른 한정 기호가있는 강화 된 욕심이 많은 토큰은 좋은 생각이 아니지만 충분히 좋습니다. 나는 그것을보다 효율적으로 전개 할 것이다. –

+0

비효율적입니까? 그는 분명히 명중 시도를 보여줍니다. 당신은 정규식을 의미합니까? 이것은 현재 작동합니다 .. :-) –

+0

시도가 있는지 여부는 신경 쓰지 않습니다. 단지 욕심이 심한 욕심이 많은 토큰의 아이디어는 문자열의 일부를 다음 토큰과 가장 일치하는 부분으로 제한하는 것입니다 (최단 경로). 예, 적어도 regex101.com에서 작동해야합니다. –

관련 문제