Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.util.Arrays;
- import java.util.Random;
- import java.util.Scanner;
- public class Main {
- public static char[] currBinaryStr; //текущ стринг
- public static char[] prevBinaryStr;//предишният стринг
- public static char [] nameToCharArr;
- public static int DEC;
- public static char aSCII;
- public static void main(String[] args) {
- Scanner scan = new Scanner(System.in);
- System.out.println("Input string:");
- String name = scan.nextLine(); //въвеждаме име от клавиатурата
- nameToCharArr = name.toCharArray(); //конвертираме входния стринг в масив от символи
- int lenght = nameToCharArr.length;
- int a = 0;
- for (int i = 0; i < nameToCharArr.length; i++) { // фор-цикъл,с който обработваме буква по буква на масива от символи
- int ascII = nameToCharArr[i]; //конвертираме символа в неговия ASCII-код
- currBinaryStr = new char[lenght];
- prevBinaryStr = new char[lenght];
- prevBinaryStr = Integer.toBinaryString(ascII).toCharArray();//конвертираме ASCII-кода в двоично число
- prevBinaryStr = Arrays.copyOf(currBinaryStr, nameToCharArr.length);
- if (currBinaryStr.length < 8) {
- while (currBinaryStr.length < 8) {
- elements();
- }
- }
- int rot = 13;
- prevBinaryStr = Arrays.copyOf(currBinaryStr, currBinaryStr.length);
- //1. Извикваме метода rOR13 върху currBinaryStr
- //2. Извикваме метода xOR и запазване на резултатав currBinaryStr
- ROT(false, rot);
- XOR();
- prevBinaryStr = Arrays.copyOf(currBinaryStr, currBinaryStr.length);
- rot = 7;
- ROT(false, rot);
- XOR();
- int SHT = 3;
- ROT(true, SHT);
- BinarToDecimal();
- decToASCII();
- aSCIIToNameCharr(a);
- a++;
- System.out.println(Arrays.toString(currBinaryStr));
- System.out.println(aSCII);
- //3. Извикваме метода rOR17 върху currBinaryStr
- //4. Извикваме метода xOR и запазваме резултата в currBinaryStr
- //5. Извикваме метода sHFTS5 и запазваме резултата в currBinaryStr
- //6. Извикваме метода BinToDecimal,за конвертиране на двоични числа (currBinaryStr) в десетично
- //7. Конвертираме десетичното число в символ(ASCII-код)
- //8. Записваме си получения символ в масива nameToCharArr[i] на съответната позиция
- }
- System.out.println("FINAL RESULT: " + Arrays.toString(nameToCharArr));
- }
- public static void BinarToDecimal() {
- String currentBIN = String.valueOf(currBinaryStr);
- DEC = Integer.parseInt(currentBIN, 2);
- if(DEC < 33 || DEC > 126){
- Random randomElements = new Random();
- int minASCII = 33;
- int maxASCII = 127;
- DEC = randomElements.nextInt(maxASCII - minASCII + 1) + minASCII;
- }
- System.out.println("NUMBER: " + DEC);
- }
- public static void decToASCII() {
- aSCII = (char)DEC; //кастваме
- }
- public static void aSCIIToNameCharr(int a){
- nameToCharArr[a] = aSCII;
- }
- public static void XOR() {
- for (int i = 0; i < currBinaryStr.length; i++) {
- if (currBinaryStr[i] == prevBinaryStr[i]) {
- currBinaryStr[i] = '0';
- }else{
- currBinaryStr[i] = '1';
- }
- }
- }
- public static void ROT(boolean RorS, int ROT) {
- if (!RorS) {
- for (int i = ROT; i > 0; i--) {
- char last = currBinaryStr[currBinaryStr.length - 1];
- for (int j = currBinaryStr.length - 1; j > 0; j--) {
- currBinaryStr[j] = currBinaryStr[j - 1];
- }
- currBinaryStr[0] = last;
- }
- } else {
- for (int i = ROT; i > 0; i--) {
- for (int j = currBinaryStr.length - 1; j > 0; j--) {
- currBinaryStr[j] = currBinaryStr[j - 1];
- }
- currBinaryStr[0] = '0';
- }
- }
- }
- public static void elements() {
- char b = '0';
- char[] currArr = new char[currBinaryStr.length + 1];
- int index1 = 0;
- int index2 = 0;
- for (int i = 0; i < currArr.length; i++) {
- if (i == index1) {
- currArr[i] = b;
- } else {
- currArr[i] = currBinaryStr[index2];
- index2++;
- }
- }
- currBinaryStr = currArr;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement