В настоящее время я пытаюсь реализовать шифрование McEliece, используя BC, но столкнувшись с некоторыми проблемами. В настоящее время у меня есть возможности создавать ключи и помещать их в файл, я могу прочитать их обратно в программу, но не могу заставить его перейти от байтов к открытому ключу.McEliece (Bouncy Castle) Получение открытого ключа
Ниже то, что я в настоящее время:
public static String EncryptText(Component tmp, String Plaintext) throws InvalidKeyException, InvalidCipherTextException {
String CipherText = "Didnt Work";
try {
// The message to encrypt.
byte[] messageBytes = Plaintext.getBytes();
//read in the Public Key to use to Encrypt.
File f = new File(tmp.getPublicKey());
FileInputStream fis = new FileInputStream(f);
byte[] PubKeybytes = new byte[fis.available()];
fis.read(PubKeybytes);
fis.close();
//turn the bytes into the Key.
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(PubKeybytes);
SubjectPublicKeyInfo PKI ;
KeyFactory KF = null;
try {
KF = KeyFactory.getInstance("McEliece");
} catch (NoSuchAlgorithmException ex) {
Logger.getLogger(McEliecePKCS.class.getName()).log(Level.SEVERE, null, ex);
}
PublicKey PK = null;
try {
PK = KF.generatePublic(pubKeySpec);
} catch (InvalidKeySpecException ex) {
Logger.getLogger(McEliecePKCS.class.getName()).log(Level.SEVERE, null, ex);
}
//Public Key
PublicKey aPublic = PK;
McEliecePublicKeyParameters GPKP = (McEliecePublicKeyParameters) McElieceKeysToParams.generatePublicKeyParameter(aPublic);
//set the public key to use.
McElieceCipher EnCipheredText = new McElieceCipher();
EnCipheredText.init(true, GPKP);
EnCipheredText.initCipherEncrypt(GPKP);
byte[] ciphertextBytes;
//sign the message with the public key.
ciphertextBytes = EnCipheredText.messageEncrypt(messageBytes);
CipherText = new String(ciphertextBytes);
return CipherText;
} catch (IOException ex) {
Logger.getLogger(McEliecePKCS.class.getName()).log(Level.SEVERE, null, ex);
}
return CipherText;
}\
В настоящее время им ошибки, имеющие этот код с KeyFactory и «Мак-Элиса» не рассматривается алгоритм, как им получить NoSuchAlgorithmException, но им не совсем уверен, что еще попробовать в данный момент. Я также попытался использовать KeyFactory, который включен в BouncyCastle для McEliece, но не имел успеха, поскольку методы были либо защищены, либо не позволяли KeySpec и хотели, чтобы SubjectPublicKeyInfo, который я не мог понять, как изменить KeySpec в массив Byte в.
Извините, если это простой вопрос, довольно новый для кодирования криптографии.
Спасибо за ответы заранее.
Благодарим за сообщение о возвращении MrFolo. Вы можете принять свой ответ через некоторое время (день или два, если я не ошибаюсь). –