first commit
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
*.class
|
||||
|
||||
35
Makefile
Normal file
35
Makefile
Normal file
@@ -0,0 +1,35 @@
|
||||
#
|
||||
# A simple makefile for compiling three java classes
|
||||
#
|
||||
|
||||
# define a makefile variable for the java compiler
|
||||
#
|
||||
JCC = javac
|
||||
|
||||
# define a makefile variable for compilation flags
|
||||
# the -g flag compiles with debugging information
|
||||
#
|
||||
JFLAGS = -g
|
||||
|
||||
# typing 'make' will invoke the first target entry in the makefile
|
||||
# (the default one in this case)
|
||||
#
|
||||
default: poop
|
||||
# this target entry builds the Average class
|
||||
# the Average.class file is dependent on the Average.java file
|
||||
# and the rule associated with this entry gives the command to create it
|
||||
#
|
||||
poop: append.java
|
||||
$(JCC) *.java
|
||||
|
||||
#Convert.class: Convert.java
|
||||
# $(JCC) $(JFLAGS) Convert.java
|
||||
|
||||
#Volume.class: Volume.java
|
||||
# $(JCC) $(JFLAGS) Volume.java
|
||||
|
||||
# To start over from scratch, type 'make clean'.
|
||||
# Removes all .class files, so that the next make rebuilds them
|
||||
#
|
||||
clean:
|
||||
$(RM) *.class
|
||||
266
append.java
Normal file
266
append.java
Normal file
@@ -0,0 +1,266 @@
|
||||
import java.util.*;
|
||||
import java.io.*;
|
||||
|
||||
public class append
|
||||
{
|
||||
public static Scanner in = new Scanner(System.in);
|
||||
public static void main(String[] args) {
|
||||
|
||||
String [] logArray = args;
|
||||
|
||||
if (logArray[0].equals("-B")) {
|
||||
BatchReader reader = new BatchReader();
|
||||
LogAppender logTester = new LogAppender();
|
||||
|
||||
if (reader.openFile(logArray[1]) == true) {
|
||||
reader.readFile(logTester);
|
||||
reader.closeFile();
|
||||
}
|
||||
}
|
||||
else
|
||||
System.out.println("poop"); //read single logs
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class BatchReader
|
||||
{
|
||||
private Scanner x;
|
||||
|
||||
public boolean openFile(String dataFile)
|
||||
{
|
||||
try{
|
||||
x = new Scanner(new File(dataFile));
|
||||
}
|
||||
catch(Exception e){
|
||||
System.out.println("could not read file.");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public void readFile(LogAppender logger)
|
||||
{
|
||||
String firstline = x.nextLine();
|
||||
//System.out.println(firstline);
|
||||
logger.validateLog(firstline);
|
||||
|
||||
//open log based on log name and pw of first line
|
||||
//logger.openLog(firstline);
|
||||
//if openLog was successful then go to while else error
|
||||
|
||||
while(x.hasNextLine())
|
||||
{
|
||||
String logLine = x.nextLine();
|
||||
logger.validateLog(logLine);
|
||||
//read in individual log lines
|
||||
}
|
||||
}
|
||||
|
||||
public void closeFile()
|
||||
{ x.close(); }
|
||||
}
|
||||
|
||||
class LogAppender
|
||||
{
|
||||
private String currentPassword = null;
|
||||
private String encryptionKey = "blablad93j2wp0s1";
|
||||
private String currentLog = null;
|
||||
|
||||
//make a hashtable of persons with name+log as the key
|
||||
//private ArrayList<Person> currentPersons = new ArrayList<>();
|
||||
|
||||
public void validateLog(String log)
|
||||
{
|
||||
String password, name, logName;
|
||||
int time, room;
|
||||
boolean arriving, guest, inLobby;
|
||||
|
||||
System.out.println(log);
|
||||
StringTokenizer check = new StringTokenizer(log);
|
||||
|
||||
// check for valid length
|
||||
int logLength = check.countTokens();
|
||||
if (logLength == 8)
|
||||
inLobby = true;
|
||||
else if (logLength == 10)
|
||||
inLobby = false;
|
||||
else
|
||||
{
|
||||
System.out.println("Invalid length of log entry");
|
||||
return;
|
||||
}
|
||||
|
||||
// check for -K
|
||||
if (check.nextToken().equals("-K") == false) {
|
||||
System.out.println("no -K command");
|
||||
return;
|
||||
}
|
||||
|
||||
// check password
|
||||
password = check.nextToken();
|
||||
if (password.matches("\\A\\p{Alnum}*\\z") == false) {
|
||||
System.out.println("incorrect password (must be alphanumeric)");
|
||||
return;
|
||||
}
|
||||
|
||||
// check -T
|
||||
if (check.nextToken().equals("-T") == false) {
|
||||
System.out.println("no -T command");
|
||||
return;
|
||||
}
|
||||
|
||||
// check time
|
||||
String timeEntry = check.nextToken();
|
||||
if (timeEntry.matches("\\A\\p{Digit}*\\z") == false) {
|
||||
System.out.println("invalid time entry");
|
||||
return;
|
||||
}
|
||||
else
|
||||
time = Integer.parseInt(timeEntry);
|
||||
|
||||
// check -A or -L
|
||||
String movement = check.nextToken();
|
||||
if (movement.equals("-A"))
|
||||
arriving = true;
|
||||
else if (movement.equals("-L"))
|
||||
arriving = false;
|
||||
else
|
||||
System.out.println("invalid movement");
|
||||
|
||||
// check if entry has 5 or 3 more elements
|
||||
if (check.countTokens() == 5) {
|
||||
|
||||
// check -R
|
||||
if (check.nextToken().equals("-R") == false) {
|
||||
System.out.println("invalid room command");
|
||||
return;
|
||||
}
|
||||
|
||||
// check room
|
||||
String roomEntry = check.nextToken();
|
||||
if (roomEntry.matches("\\A\\p{Digit}*\\z") == false) {
|
||||
System.out.println("invalid room number");
|
||||
return;
|
||||
}
|
||||
else
|
||||
room = Integer.parseInt(roomEntry);
|
||||
}
|
||||
|
||||
// check -G or -E
|
||||
String personType = check.nextToken();
|
||||
if (personType.equals("-G"))
|
||||
guest = true;
|
||||
else if (personType.equals("-E"))
|
||||
guest = false;
|
||||
else
|
||||
System.out.println("invalid personType command");
|
||||
|
||||
// check name
|
||||
name = check.nextToken();
|
||||
if (name.matches("\\A\\p{Alpha}*\\z") == false) {
|
||||
System.out.println("Invalid name (must be alphabetic");
|
||||
return;
|
||||
}
|
||||
|
||||
logName = check.nextToken();
|
||||
if (logName.matches("\\A\\p{Alnum}*\\z") == false) {
|
||||
System.out.println("invalid log name (must be alphanumeric)");
|
||||
return;
|
||||
}
|
||||
|
||||
//check logname and verify password
|
||||
//if no log exists and inLobby = true, then create new log
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class LogFile
|
||||
{
|
||||
private String logName;
|
||||
private int currentTime;
|
||||
private String password;
|
||||
private String key;
|
||||
|
||||
Hashtable<String, Person> log = new Hashtable<>();
|
||||
|
||||
public LogFile(String logName)
|
||||
{
|
||||
this.logName = logName;
|
||||
}
|
||||
|
||||
public void addPerson(Person newP)
|
||||
{
|
||||
log.put(newP.getName(), newP);
|
||||
}
|
||||
|
||||
public String getLogName()
|
||||
{ return logName; }
|
||||
|
||||
public Person getPerson(String name)
|
||||
{
|
||||
return log.get(name);
|
||||
}
|
||||
|
||||
public boolean varifyPassword(String testPassword)
|
||||
{
|
||||
return password.equals(testPassword);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
class Person
|
||||
{
|
||||
public Person(String name, String type, int location,
|
||||
String movement, int time, String logName, String listOfRooms)
|
||||
{
|
||||
this.time = time; //-T 1
|
||||
this.movement = movement; //-A
|
||||
this.type = type; //-E
|
||||
this.name = name; //Joe
|
||||
this.location = location; //-R 1
|
||||
this.logName = logName; //log1
|
||||
this.listOfRooms = listOfRooms;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
{ return name; }
|
||||
|
||||
public boolean hasLeftLastRoom()
|
||||
{
|
||||
if (movement.equals("-L"))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public int checkTime()
|
||||
{ return time; }
|
||||
|
||||
public void updateMovement(int location, String movement, int time)
|
||||
{
|
||||
this.location = location;
|
||||
this.movement = movement;
|
||||
this.time = time;
|
||||
listOfRooms.concat(", " + location);
|
||||
}
|
||||
|
||||
public String toString()
|
||||
{
|
||||
return name + type + location + movement + time + logName + listOfRooms;
|
||||
}
|
||||
|
||||
private int time;
|
||||
private String movement;
|
||||
private String type;
|
||||
private String name;
|
||||
private int location;
|
||||
private String logName;
|
||||
private String listOfRooms;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
5
batch
Normal file
5
batch
Normal file
@@ -0,0 +1,5 @@
|
||||
-K secret -T 0 -A -E John log2
|
||||
-K secret -T 1 -A -R 0 -E John log2
|
||||
-K secret -T 2 -A -G James log2
|
||||
-K secret -T 3 -A -R 0 -G James log2
|
||||
-K secret -T 5 -L -R 0 -G James log2
|
||||
38
encryptionTest/StrongAES.java
Normal file
38
encryptionTest/StrongAES.java
Normal file
@@ -0,0 +1,38 @@
|
||||
//package com.example;
|
||||
|
||||
import java.security.Key;
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
|
||||
public class StrongAES {
|
||||
|
||||
public void run() {
|
||||
try {
|
||||
String text = "Hello World" + "\nNew Line";
|
||||
//String key = "Bar12345Bar12345"; // 128 bit key
|
||||
String key = "blablad93j2wp0s1";
|
||||
|
||||
// Create key and cipher
|
||||
Key aesKey = new SecretKeySpec(key.getBytes(), "AES");
|
||||
System.out.println("key: " + aesKey);
|
||||
Cipher cipher = Cipher.getInstance("AES");
|
||||
|
||||
// encrypt the text
|
||||
cipher.init(Cipher.ENCRYPT_MODE, aesKey);
|
||||
byte[] encrypted = cipher.doFinal(text.getBytes());
|
||||
System.err.println(new String(encrypted));
|
||||
|
||||
// decrypt the text
|
||||
cipher.init(Cipher.DECRYPT_MODE, aesKey);
|
||||
String decrypted = new String(cipher.doFinal(encrypted));
|
||||
System.err.println(decrypted);
|
||||
}catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
StrongAES app = new StrongAES();
|
||||
app.run();
|
||||
}
|
||||
}
|
||||
1
readme.txt
Normal file
1
readme.txt
Normal file
@@ -0,0 +1 @@
|
||||
Program for the Buil-it Break-it Fix-it competition
|
||||
Reference in New Issue
Block a user