rendered paste bodyimport java.util.Scanner; // Needed for Scanner class
import java.io.*; // Needed for file classes
public class KeyStream{
private int[] keys;
private int[] cards;
public KeyStream(int lengthOfMessage) throws IOException
{
cards = new int[28];
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter file name of deck of cards:");
String fileName = keyboard.nextLine();
FileReader freader = new FileReader(fileName);
BufferedReader inputFile = new BufferedReader(freader);
//System.out.println(Integer.parseInt(inputFile.readLine()));
cards[0] = Integer.parseInt(inputFile.readLine());
cards[1] = Integer.parseInt(inputFile.readLine());
cards[2] = Integer.parseInt(inputFile.readLine());
cards[3] = Integer.parseInt(inputFile.readLine());
cards[4] = Integer.parseInt(inputFile.readLine());
cards[5] = Integer.parseInt(inputFile.readLine());
cards[6] = Integer.parseInt(inputFile.readLine());
cards[7] = Integer.parseInt(inputFile.readLine());
cards[8] = Integer.parseInt(inputFile.readLine());
cards[9] = Integer.parseInt(inputFile.readLine());
cards[10] = Integer.parseInt(inputFile.readLine());
cards[11] = Integer.parseInt(inputFile.readLine());
cards[12] = Integer.parseInt(inputFile.readLine());
cards[13] = Integer.parseInt(inputFile.readLine());
cards[14] = Integer.parseInt(inputFile.readLine());
cards[15] = Integer.parseInt(inputFile.readLine());
cards[16] = Integer.parseInt(inputFile.readLine());
cards[17] = Integer.parseInt(inputFile.readLine());
cards[18] = Integer.parseInt(inputFile.readLine());
cards[19] = Integer.parseInt(inputFile.readLine());
cards[20] = Integer.parseInt(inputFile.readLine());
cards[21] = Integer.parseInt(inputFile.readLine());
cards[22] = Integer.parseInt(inputFile.readLine());
cards[23] = Integer.parseInt(inputFile.readLine());
cards[24] = Integer.parseInt(inputFile.readLine());
cards[25] = Integer.parseInt(inputFile.readLine());
cards[26] = Integer.parseInt(inputFile.readLine());
cards[27] = Integer.parseInt(inputFile.readLine());
inputFile.close();
keys = new int[lengthOfMessage]; //allocate memory for the cards
//prompt the user for the name of the file containing
//the deck of cards (created by the Deck class).
//read the cards from this file into the cards[] array.
//allocate memory for the keys[] array (remember its size
//is determined by the messages length).
//generate the keys.
}
public void swapJokerA()
{
//step 1 in manipulating cards[] array.
int cardHolder = 0;
if(cards[0] == 27)
{
cardHolder = cards[1];
cards[1] = cards[0];
cards[0] = cardHolder;
}
else if(cards[1] == 27)
{
cardHolder = cards[2];
cards[2] = cards[1];
cards[1] = cardHolder;
}
else if(cards[2] == 27)
{
cardHolder = cards[3];
cards[3] = cards[2];
cards[2] = cardHolder;
}
else if(cards[3] == 27)
{
cardHolder = cards[4];
cards[4] = cards[3];
cards[3] = cardHolder;
}
else if(cards[4] == 27)
{
cardHolder = cards[5];
cards[5] = cards[4];
cards[4] = cardHolder;
}
else if(cards[5] == 27)
{
cardHolder = cards[6];
cards[6] = cards[5];
cards[5] = cardHolder;
}
else if(cards[6] == 27)
{
cardHolder = cards[7];
cards[7] = cards[6];
cards[6] = cardHolder;
}
else if(cards[7] == 27)
{
cardHolder = cards[8];
cards[8] = cards[7];
cards[7] = cardHolder;
}
else if(cards[8] == 27)
{
cardHolder = cards[9];
cards[9] = cards[8];
cards[8] = cardHolder;
}
else if(cards[9] == 27)
{
cardHolder = cards[10];
cards[10] = cards[9];
cards[9] = cardHolder;
}
else if(cards[10] == 27)
{
cardHolder = cards[11];
cards[11] = cards[10];
cards[10] = cardHolder;
}
else if(cards[11] == 27)
{
cardHolder = cards[12];
cards[12] = cards[11];
cards[11] = cardHolder;
}
else if(cards[12] == 27)
{
cardHolder = cards[13];
cards[13] = cards[12];
cards[12] = cardHolder;
}
else if(cards[13] == 27)
{
cardHolder = cards[14];
cards[14] = cards[13];
cards[13] = cardHolder;
}
else if(cards[14] == 27)
{
cardHolder = cards[15];
cards[15] = cards[14];
cards[14] = cardHolder;
}
else if(cards[15] == 27)
{
cardHolder = cards[16];
cards[16] = cards[15];
cards[15] = cardHolder;
}
else if(cards[16] == 27)
{
cardHolder = cards[17];
cards[17] = cards[16];
cards[16] = cardHolder;
}
else if(cards[17] == 27)
{
cardHolder = cards[18];
cards[18] = cards[17];
cards[17] = cardHolder;
}
else if(cards[18] == 27)
{
cardHolder = cards[19];
cards[19] = cards[18];
cards[18] = cardHolder;
}
else if(cards[19] == 27)
{
cardHolder = cards[20];
cards[20] = cards[19];
cards[19] = cardHolder;
}
else if(cards[20] == 27)
{
cardHolder = cards[21];
cards[21] = cards[20];
cards[20] = cardHolder;
}
else if(cards[21] == 27)
{
cardHolder = cards[22];
cards[22] = cards[21];
cards[21] = cardHolder;
}
else if(cards[22] == 27)
{
cardHolder = cards[23];
cards[23] = cards[22];
cards[22] = cardHolder;
}
else if(cards[23] == 27)
{
cardHolder = cards[24];
cards[24] = cards[23];
cards[23] = cardHolder;
}
else if(cards[24] == 27)
{
cardHolder = cards[25];
cards[25] = cards[24];
cards[24] = cardHolder;
}
else if(cards[25] == 27)
{
cardHolder = cards[26];
cards[25] = cards[25];
cards[25] = cardHolder;
}
else if(cards[26] == 27)
{
cardHolder = cards[27];
cards[27] = cards[26];
cards[26] = cardHolder;
}
else
{
cardHolder = cards[0];
cards[0] = cards[27];
cards[27] = cardHolder;
}
}
public void moveJokerB(){
//step 2 in manipulating cards[] array.
int cardHolder1 = 0;
int cardHolder2 = 0;
if(cards[0] == 28)
{
cardHolder1 = cards[1];
cardHolder2 = cards[2];
cards[2] = cards[0];
cards[1] = cardHolder2;
cards[0] = cardHolder1;
}
else if(cards[1] == 28)
{
cardHolder1 = cards[2];
cardHolder2 = cards[3];
cards[3] = cards[1];
cards[2] = cardHolder2;
cards[1] = cardHolder1;
}
else if(cards[2] == 28)
{
cardHolder1 = cards[3];
cardHolder2 = cards[4];
cards[4] = cards[2];
cards[3] = cardHolder2;
cards[2] = cardHolder1;
}
else if(cards[3] == 28)
{
cardHolder1 = cards[4];
cardHolder2 = cards[5];
cards[5] = cards[3];
cards[4] = cardHolder2;
cards[3] = cardHolder1;
}
else if(cards[4] == 28)
{
cardHolder1 = cards[5];
cardHolder2 = cards[6];
cards[6] = cards[4];
cards[5] = cardHolder2;
cards[4] = cardHolder1;
}
else if(cards[5] == 28)
{
cardHolder1 = cards[6];
cardHolder2 = cards[7];
cards[7] = cards[5];
cards[6] = cardHolder2;
cards[5] = cardHolder1;
}
else if(cards[6] == 28)
{
cardHolder1 = cards[7];
cardHolder2 = cards[8];
cards[8] = cards[6];
cards[7] = cardHolder2;
cards[6] = cardHolder1;
}
else if(cards[7] == 28)
{
cardHolder1 = cards[8];
cardHolder2 = cards[9];
cards[9] = cards[7];
cards[8] = cardHolder2;
cards[7] = cardHolder1;
}
else if(cards[8] == 28)
{
cardHolder1 = cards[9];
cardHolder2 = cards[10];
cards[10] = cards[8];
cards[9] = cardHolder2;
cards[8] = cardHolder1;
}
else if(cards[9] == 28)
{
cardHolder1 = cards[10];
cardHolder2 = cards[11];
cards[11] = cards[9];
cards[10] = cardHolder2;
cards[9] = cardHolder1;
}
else if(cards[10] == 28)
{
cardHolder1 = cards[11];
cardHolder2 = cards[12];
cards[12] = cards[10];
cards[11] = cardHolder2;
cards[10] = cardHolder1;
}
else if(cards[11] == 28)
{
cardHolder1 = cards[12];
cardHolder2 = cards[13];
cards[13] = cards[11];
cards[12] = cardHolder2;
cards[11] = cardHolder1;
}
else if(cards[12] == 28)
{
cardHolder1 = cards[13];
cardHolder2 = cards[14];
cards[14] = cards[12];
cards[13] = cardHolder2;
cards[12] = cardHolder1;
}
else if(cards[13] == 28)
{
cardHolder1 = cards[14];
cardHolder2 = cards[15];
cards[15] = cards[13];
cards[14] = cardHolder2;
cards[13] = cardHolder1;
}
else if(cards[14] == 28)
{
cardHolder1 = cards[15];
cardHolder2 = cards[16];
cards[16] = cards[14];
cards[15] = cardHolder2;
cards[14] = cardHolder1;
}
else if(cards[15] == 28)
{
cardHolder1 = cards[16];
cardHolder2 = cards[17];
cards[17] = cards[15];
cards[16] = cardHolder2;
cards[15] = cardHolder1;
}
else if(cards[16] == 28)
{
cardHolder1 = cards[17];
cardHolder2 = cards[18];
cards[18] = cards[16];
cards[17] = cardHolder2;
cards[16] = cardHolder1;
}
else if(cards[17] == 28)
{
cardHolder1 = cards[18];
cardHolder2 = cards[19];
cards[19] = cards[17];
cards[18] = cardHolder2;
cards[17] = cardHolder1;
}
else if(cards[18] == 28)
{
cardHolder1 = cards[19];
cardHolder2 = cards[20];
cards[20] = cards[18];
cards[19] = cardHolder2;
cards[18] = cardHolder1;
}
else if(cards[19] == 28)
{
cardHolder1 = cards[20];
cardHolder2 = cards[21];
cards[21] = cards[19];
cards[20] = cardHolder2;
cards[19] = cardHolder1;
}
else if(cards[20] == 28)
{
cardHolder1 = cards[21];
cardHolder2 = cards[22];
cards[22] = cards[20];
cards[21] = cardHolder2;
cards[20] = cardHolder1;
}
else if(cards[22] == 28)
{
cardHolder1 = cards[23];
cardHolder2 = cards[24];
cards[24] = cards[22];
cards[23] = cardHolder2;
cards[22] = cardHolder1;
}
else if(cards[23] == 28)
{
cardHolder1 = cards[24];
cardHolder2 = cards[25];
cards[25] = cards[23];
cards[24] = cardHolder2;
cards[23] = cardHolder1;
}
else if(cards[24] == 28)
{
cardHolder1 = cards[25];
cardHolder2 = cards[26];
cards[26] = cards[24];
cards[25] = cardHolder2;
cards[24] = cardHolder1;
}
else if(cards[25] == 28)
{
cardHolder1 = cards[26];
cardHolder2 = cards[27];
cards[27] = cards[25];
cards[26] = cardHolder2;
cards[25] = cardHolder1;
}
else if(cards[26] == 28)
{
cardHolder1 = cards[27];
cardHolder2 = cards[0];
cards[0] = cards[26];
cards[27] = cardHolder2;
cards[26] = cardHolder1;
}
else
{
cardHolder1 = cards[0];
cardHolder2 = cards[1];
cards[1] = cards[27];
cards[0] = cardHolder2;
cards[27] = cardHolder1;
}
}
public void tripleCut(){
//step 3 in manipulating cards[] array.
int jokerA = find(27);
int jokerB = find(28);
int[] cardHolder1 = new int[28];
int[] cardHolder2 = new int[28];
int[] cardHolder3 = new int[28];
int cardCount5 = 0;
int cardCount6 = 0;
int joker1 = 0;
int joker2 = 0;
if(jokerA < jokerB)
{
joker1 = jokerA;
joker2 = jokerB;
}
else
{
joker1 = jokerB;
joker2 = jokerA;
}
for(int cardCount1 = (joker1 + 1); cardCount1 < joker2; cardCount1++)
{
cardHolder1[cardCount1] = cards[cardCount1];
}
for(int cardCount2 = 0; cardCount2 < joker1; cardCount2++)
{
cardHolder2[cardCount2] = cards[cardCount2];
}
for(int cardCount3 = 27; cardCount3 > joker2; cardCount3--)
{
cardHolder3[cardCount3] = cards[cardCount3];
}
for(int cardCount4 = (joker2 + 1); cardCount4 <= 27; cardCount4++)
{
cards[cardCount5] = cardHolder3[cardCount4];
cardCount5++;
}
if(joker1 == jokerA)
{
cards[cardCount5] = 27;
cardCount5++;
}
else
{
cards[cardCount5] = 28;
cardCount5++;
}
for(; cardCount5 < joker2; cardCount5++)
{
cards[cardCount5] = cardHolder1[(joker1 + 1 + cardCount5)];
}
if(joker2 == jokerA)
{
cardCount5++;
cards[cardCount5] = 27;
cardCount5++;
}
else
{
cardCount5++;
cards[cardCount5] = 28;
cardCount5++;
}
for(; cardCount5 <= 27; cardCount5++)
{
cards[cardCount5] = cardHolder2[cardCount6];
cardCount6++;
}
}
public void moveBeforeLast(){
//step 4 manipulating cards[] array.
}
public int getNextKey(){
//this is step 5
//return the key[first card]
return 1;
}
public void generateKeys(){
swapJokerA();
moveJokerB();
tripleCut();
moveBeforeLast();
getNextKey();//fill the keys[] array with as many keys as there are letters
//in the message. Execute five steps per key.
}
/* public int[] getAllKeys(){
//return a reference to the keys[] array
}
*/
private void printCards(){ //may be useful in debugging
for(int k=0; k<Deck.DECKSIZE; k++){
System.out.print(cards[k]+ " " );
}
System.out.println();
}
private int find(int n){ //may be useful in searching for a card
int result = -1;
for(int k=0; k<Deck.DECKSIZE; k++){
if(cards[k]==n){
result = k;
break;
}
}
return result;
}
public static void main(String[] args) throws IOException
{
KeyStream ks = new KeyStream(3);
ks.generateKeys();
// int[] copyOfKeys = ks.getAllKeys();
// for(int k=0; k<copyOfKeys.length; k++){
// System.out.println(copyOfKeys[k]); //print each key
// }
}
}