Python 3.6 полностью переработал байт-код для CPython (он больше не является «байтовым» кодом, это словосочетание, где все коды операций имеют ширину в два байта вместо 1-3).
Неисправность, которую вы видите, происходит в коде py2exe
opcode parsing, который, учитывая самую последнюю опубликованную версию py2exe
, поддерживает только утверждения для 3.3 и 3.4, не мог знать или поддерживать , новый код кода кода; они даже не были задуманы в то время py2exe
. Байт-код часто изменяется малыми способами от версии к версии, которая может сломаться даже Python 3.5 (при условии, что только поддержка 3.3 и 3.4 заявлена явно), но 3.6 на 100% гарантированно сбой.
Вам нужно поставить один }
до того, как вы начнете метод public static String encrypt(String dot, SecretKey secretKey)
, то есть после окончания цикла for
Вы должны поставить один '{' перед методом шифрования, чтобы завершить цикл for.
public class Join {
static Cipher cipher;
@UserFunction
@Description("example.DES ,, Decryption of any input values.")
public byte[] DES( @Name("set1") List<String> strings1) {
for (int i = 0; i < strings1.size(); i++) {
String dot;
dot = strings1.get(i);
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(128);
SecretKey secretKey = keyGenerator.generateKey();
cipher = Cipher.getInstance("AES");
String encryptedText = encrypt(dot, secretKey);
System.out.println("Encrypted Text After Encryption: " + encryptedText);
}
}
public static String encrypt(String dot, SecretKey secretKey)
throws Exception {
byte[] plainTextByte = dot.getBytes();
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedByte = cipher.doFinal(plainTextByte);
Base64.Encoder encoder = Base64.getEncoder();
String encryptedText = encoder.encodeToString(encryptedByte);
return encryptedText;
}
}
Вы пропустили закрывающую скобку, ваш код не может быть запущен, и если вы добавите его в неправильном месте, вы просто вызовете еще больше проблем в коде. Я предлагаю использовать что-то вроде ЭТОГО:
Редактировать: я никогда не использовал Cipher, по моему предположению, если добавление закрывающей скобки не работает, у вас, скорее всего, есть ошибка в самом коде, и Я рекомендую вам внимательно просмотреть его и проверить на наличие ошибок.
public class Join {
static Cipher cipher;
@UserFunction
@Description("example.DES ,, Decryption of any input values.")
public byte[] DES( @Name("set1") List<String> strings1) {
for (int i = 0; i < strings1.size(); i++) {
String dot;
dot = strings1.get(i);
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(128);
SecretKey secretKey = keyGenerator.generateKey();
cipher = Cipher.getInstance("AES");
String encryptedText = encrypt(dot, secretKey);
System.out.println("Encrypted Text After Encryption: " + encryptedText);
}
public static String encrypt(String dot, SecretKey secretKey)
throws Exception {
byte[] plainTextByte = dot.getBytes();
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedByte = cipher.doFinal(plainTextByte);
Base64.Encoder encoder = Base64.getEncoder();
String encryptedText = encoder.encodeToString(encryptedByte);
return encryptedText;
}
}
}