Это нормальный формат / размер для симметричного ключа?

#java #android #android-studio #aes

#java #Android #android-studio #aes

Вопрос:

Эта функция создает симметричные и асимметричные ключи, а затем генерирует QR-код с открытым и симметричным ключом и некоторыми другими данными:

       private void initQRCode() {
            String qrString = "";
                try {
                    Random r = new Random();
                    KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
                    keyPairGenerator.initialize(256, new SecureRandom());
                    KeyPair keyPair = keyPairGenerator.generateKeyPair();

                    KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
                    keyGenerator.init(256); // for example
                    SecretKey secretKey = keyGenerator.generateKey();


                    byte [] pubBytes = keyPair.getPublic().getEncoded();
                    byte [] symBytes = secretKey.getEncoded();
                    String publicKey = android.util.Base64.encodeToString(pubBytes,0);
                    String symKey = android.util.Base64.encodeToString(symBytes,0);

                    long groupID =  r.nextLong();
                    int tutorID = r. nextInt();

                    System.out.println(publicKey);
                    System.out.println(symKey);
                    System.out.println(groupID);
                    System.out.println(tutorID);

                    qrString = publicKey   ":::"   symKey    ":::"   groupID   ":::"   tutorID;

                }catch(NoSuchAlgorithmException e){
                    e.printStackTrace();
                }
               if(qrString != "") {
                   StringBuilder textToSend = new StringBuilder();
                   textToSend.append(qrString);
                   MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
                   try {
                       BitMatrix bitMatrix = multiFormatWriter.encode(textToSend.toString(), BarcodeFormat.QR_CODE, 600, 600);
                       BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
                       Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
                       imageView.setImageBitmap(bitmap);
                       imageView.setVisibility(View.VISIBLE);

                   } catch (WriterException e) {
                       e.printStackTrace();
                   }
               }
        }
 

Конечный результат QR-КОДА:
MDwwDQYJKoZIhvcNAQEBBQADKwAwKAIhAK6saelQTFFeGgAcuxH9GKmMqFXlVSck1S4aEYMh9ASt
АгМБААЕ=
:::/3aktO5322KlHLTwVY490S6/rpXW1z0Ga30 HKNI64E=
:::2629194659936505759:::1529276565

Комментарии:

1. Ваш AES-ключ имеет длину 256 бит или 32 байта, и это максимальная длина ключа для симметричного шифрования AES. Генерация пары ключей RSA с длиной ключа 256 бит определенно слишком коротка — сегодняшний минимум должен составлять 2048 бит. Поскольку существует «нормальная» кодировка ключа, я не могу ответить на ваш вопрос. Base64 в основном используется, когда ключ необходимо распечатать или передать, например, по почте. Для использования QR-кода требуется считыватель с другой стороны, который знает, какие данные находятся «внутри» QR-кода, поэтому кодирование Base64 не требуется.