Я не специалист по PowerShell, поэтому могу просто дать вам несколько советов по запуску части дешифрования для таких задач, как «получить все файлы в папке с окончанием * .en c». Я оставляю это вам чтобы найти решение.
Предполагая, что у вас есть ключ в формате
MTIzNDU2Nzg5MDEyMzQ1Ng==
, тогда это ключ с кодировкой Base64. Если все ваши 30 000 сертификатов были зашифрованы одним и тем же ключом, просто получите шестнадцатеричное значение ключа, используя онлайн-сервис, например https://base64.guru/converter/decode/hex.
Просто введите строку выше и нажмите преобразуйте Base64 в шестнадцатеричный, и вы получите следующий ключ:
31323334353637383930313233343536
Теперь посчитайте символы - здесь у нас есть 32 символа, что означает, что это 16-байтовый (128-битный) длинный ключ, используемый для криптографии AES. Подсчитать их - не шутка, потому что длина ключа важна для задачи дешифрования.
Наличие файла сертификата, зашифрованного с помощью шестнадцатеричного ключа длиной 32 символа ("cert32.en c ") вы используете openssl (может использоваться в PowerShell, а также во многих других языках сценариев) с этой командой ( важно использовать параметр -K с большой буквы K и шестнадцатеричную строку, заключенную в кавычки):
openssl enc -aes-128-ecb -d -in cert32.enc -out cert.pem -K "31323334353637383930313233343536"
Это расшифрует исходный сертификат для файла «cert.pem» следующим образом (это образец сертификата!):
-----BEGIN CERTIFICATE-----
MIIEETCCAvmgAwIBAgIUP2GufsPxg8R2n6L161b6wauxnGYwDQYJKoZIhvcNAQEL
BQAwgZcxCzAJBgNVBAYTAkRFMRIwEAYDVQQIDAlzb21lU3RhdGUxDTALBgNVBAcM
BGNpdHkxEDAOBgNVBAoMB2NvbXBhbnkxEDAOBgNVBAsMB3NlY3Rpb24xHzAdBgNV
BAMMFmphdmFjcnlwdG9AYnBsYWNlZC5uZXQxIDAeBgkqhkiG9w0BCQEWEWphdmFj
cnlwdG9AZ214LmRlMB4XDTIwMDcxMTA4MDMxNloXDTIxMDcxMTA4MDMxNlowgZcx
CzAJBgNVBAYTAkRFMRIwEAYDVQQIDAlzb21lU3RhdGUxDTALBgNVBAcMBGNpdHkx
EDAOBgNVBAoMB2NvbXBhbnkxEDAOBgNVBAsMB3NlY3Rpb24xHzAdBgNVBAMMFmph
dmFjcnlwdG9AYnBsYWNlZC5uZXQxIDAeBgkqhkiG9w0BCQEWEWphdmFjcnlwdG9A
Z214LmRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv1fayJg6TO7D
NASipOooJu9aYxLfw5/jokbaggOkL7wPQ2+eWk3tby72jMFniWySm6YIkiTbewYo
8WKl94zWTT8xx5pg/eOh28BTQLsi0/s9RF37z+eJA1TjA6TuBesNevm3V310H93Y
BLTA2Mjp/99W/smBhefaeYEkLh6TrZAAi2JtUHrs0FwNREoXrRIfq9monpUpY7lr
YRSy70nEaEyctw6khxeTRVRR97ZdqogLl2oEur9k5NKD8XHJ6A7MYz+asLMYNcnA
0jV02wR+b6etEr1tAtnswdxQ5T6tLrAnoen5v/fXSDnz93L7oRmTPsQJhK55TrrM
G+RWvV8aoQIDAQABo1MwUTAdBgNVHQ4EFgQULdU7CowdOtePac360y4n9aEbP2ow
HwYDVR0jBBgwFoAULdU7CowdOtePac360y4n9aEbP2owDwYDVR0TAQH/BAUwAwEB
/zANBgkqhkiG9w0BAQsFAAOCAQEAcP6EBsscMFAg0mMTLnd7+7VJzLuodPBAxiMS
zCYtUNS0KPBBR6OrGbHTbbvYd8/VGORpaWORfm0MDLP2kIxLKCYn4l7Wwoou7Idc
+Z+mohQKPwjtHnMZX6HyiCpmDF+qNR7dpOKpIsMahm9zVD8rfySFzr5oDSa7zFSr
MyJKmnz5I+gkUjJKvjYpKPjv7yuENhCbj4roNYK7ztN/vU6yJnFmzOaomP4MxhlE
GDoucjmy+qdGWF/i3Kh8n7zXBxRoBJZSkGqPE2N0PLIJlAFxb9c2QjPu5rmtZiDO
HiFj2Xk7jayMNw3JNVcayHjAcdHkp/u/BgTeqJWZRC+GsMz7ag==
-----END CERTIFICATE-----
Теперь мы работают с другой длиной ключа (64 символа). Имея base64, который выглядит как
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=
, вы получите шестнадцатеричную строку из 64 символов:
3132333435363738393031323334353637383930313233343536373839303132
Теперь мы запускаем командную строку openssl с аналогичным алгоритмом (и другим имя файла / ключ):
openssl enc -aes-256-ecb -d -in cert64.enc -out cert.pem -K "3132333435363738393031323334353637383930313233343536373839303132"
Вуаля, он декодирует тот же cert.pem, что и выше.
Все файлы доступны через мой репозиторий GitHub для легкого тестирования:
https://github.com/java-crypto/Stackoverflow/tree/master/Decoding_from_Java_to_Powershell