Как предложил @rob в комментариях, libfaketime хорошо справляется с этим:
$ gpg -v -v -v --batch --trust-model always -ear D5B9D38C <<< "qweqe" gpg: using character set 'utf-8' gpg: Note: signature key 077EA269D5B9D38C expired Sun 09 Nov 2014 12:57:25 PM +03 gpg: D5B9D38C: skipped: Unusable public key gpg: [stdin]: encryption failed: Unusable public key $ faketime '2012-12-24 08:15:42' gpg -v -v -v --batch --trust-model always -ear D5B9D38C <<< "qweqe" gpg: using character set 'utf-8' gpg: using subkey 85231B396B9569ED instead of primary key 077EA269D5B9D38C gpg: No trust check due to '--trust-model always' option gpg: reading from '[stdin]' gpg: writing to stdout gpg: RSA/AES256 encrypted for: "..." -----BEGIN PGP MESSAGE----- ...
Старый ответ:
- Запустите UML (пользовательский режим Linux)
- Установите дату внутри UML в допустимый диапазон.
- Зашифровать сообщение в UML