He escrito un analizador y firmante DKIM para Microsoft Exchange, por lo que es bastante sencillo. Solo tenga en cuenta que la clave pública almacenada en DNS no es una clave pública típica, se encuentra en una forma más compacta llamada "forma de sujeto de clave pública".
¿Cómo se puede determinar la longitud de la clave que se está utilizando simplemente mirando los encabezados?
- Haga una consulta TXT para los siguientes valores en el encabezado:
{s value}
._ domainkey. {d value}
(omita los paréntesis)
- Extraiga el valor denominado "p=" en la consulta DNS anterior
- Use un analizador ASN.1 para determinar la longitud de la clave y otras cosas que están almacenadas dentro de
Ejemplo de clave pública de 2048 bits encontrada en una consulta DKIM "p=" con un exponente de 65537
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoSd6ya7haEmQl1sWoEVVou8iC618evFqluT5zb
0aMEgBEfHSJRjT/FojPWqhjAtCYMAIggaE0ZxVzPDsMeRc3Mixy2WO9DWYAJuzwP7DyzUAclhGTfP4cG44SlbSsEsMM/91cu5zr9+TulnqPDxUyPvLZjGpJEHXoEWc4m
f6tbksyxZTI+wssw84NLfEs3VC4jN9P1CnfG2aTCC74lj1mePbEBCsg83+Ilz/dsDcH2FGmWVa5ytNCP7kkzyBYkfF09YpDiSXxowRGZbRkGveDvOP3ONUhLrXumpTP6
+/Hm34kbG/kGBSxNOXn8/2jf2m+08Bt8ci9Orzb2s8J81q6QIDAQAB
Simplemente pegue esta clave en el ASN.1 Javascript decoder para averiguar la longitud de la clave. La mayoría de los programadores solo tendrán una biblioteca para resolver esto.