Moved Vault Door code to NPC Plugin. Fixed code styling. Fixed compilation errors

This commit is contained in:
simon
2018-01-14 13:33:40 -05:00
parent 947deea784
commit a285b3104e
12 changed files with 134 additions and 144 deletions

View File

@@ -10,22 +10,24 @@ public class AutokeyCypher extends ShiftSubstitutionCypher {
super();
}
@override
protected char encryptionShiftAt(int position, char[] plaintext, char[] key, char[] partial_cyphertext){
if (i<key.length){
return key[i];
} else {
return plaintext[i-key.length];
}
@Override
protected char encryptionShiftAt(int position, char[] plaintext, char[] key, char[] partialCypherText) {
// if (i < key.length){
// return key[i];
// } else {
// return plaintext[i - key.length];
// }
return 0;
}
@override
protected char decryptionShiftAt(int position, char[] cyphertext, char[] key, char[] partial_plaintext){
if (i<key.length){
return key[i];
} else {
return partial_plaintext[i-key.length];
}
@Override
protected char decryptionShiftAt(int position, char[] cypherText, char[] key, char[] partialPlainText) {
// if (i < key.length){
// return key[i];
// } else {
// return partialPlainText[i - key.length];
// }
return 0;
}
}

View File

@@ -13,16 +13,16 @@ public class CaesarCypher extends ShiftSubstitutionCypher {
/**
* Uses the first character of the key as the shift, and ignores the rest.
*/
@override
protected char encryptionShiftAt(int position, char[] plaintext, char[] key, char[] partial_cyphertext){
@Override
protected char encryptionShiftAt(int position, char[] plaintext, char[] key, char[] partialCypherText) {
return key[0];
}
/**
* Uses the first character of the key as the shift, and ignores the rest.
*/
@override
protected char decryptionShiftAt(int position, char[] cyphertext, char[] key, char[] partial_plaintext){
@Override
protected char decryptionShiftAt(int position, char[] cypherText, char[] key, char[] partialPlainText) {
return key[0];
}

View File

@@ -7,14 +7,14 @@ public class CryptoProvider{
public static final int VIGENERE_CYPHER = 0x0002;
public static final int AUTOKEY_CYPHER = 0x0003;
public static final int PASSWORD_LENGTH = 8; // Same as CubotComPort.MESSAGE_LENGTH
public static final int PASSWORD_LENGTH = 8; //Same as CubotComPort.MESSAGE_LENGTH
private charset;
private password_generator;
private String charset;
private RandomStringGenerator passwordGenerator;
public CryptoProvider(String charset){
this.charset = charset;
this.password_generator = new RandomStringGenerator(PASSWORD_LENGTH,charset);
this.passwordGenerator = new RandomStringGenerator(PASSWORD_LENGTH, charset);
}
public CryptoProvider(){
@@ -36,8 +36,4 @@ public class CryptoProvider{
}
}
public static String getRandomPassword(){
return this.password_generator.nextString().toCharArray();
}
}

View File

@@ -2,9 +2,9 @@ package net.simon987.server.crypto;
interface Cypher {
public char[] encrypt(char[] plaintext, char[] key);
public char[] encrypt(char[] plainText, char[] key) throws CryptoException;
public char[] decrypt(char[] cyphertext, char[] key);
public char[] decrypt(char[] cypherText, char[] key) throws CryptoException;
public String textCharset();

View File

@@ -1,6 +1,6 @@
package net.simon987.server.crypto;
public abstract class NoCypher implements Cypher {
public class NoCypher implements Cypher {
private String charset;
@@ -8,32 +8,35 @@ public abstract class NoCypher implements Cypher {
this.charset = charset;
}
public NoCypher(){
this(RandomStringGenerator.alphanum);
}
public NoCypher() {
this(RandomStringGenerator.ALPHANUMERIC_CHARSET);
}
public char[] encrypt(char[] plaintext, char[] key){
char[] cyphertext = new char[plaintext.length];
for (int i = 0; i< plaintext.length; i++){
char p = plaintext[i];
public char[] encrypt(char[] plainText, char[] key) throws InvalidCharsetException {
char[] cypherText = new char[plainText.length];
for (int i = 0; i < plainText.length; i++) {
char p = plainText[i];
int p_ind = charset.indexOf(p);
if (p_ind == -1){
throw InvalidCharsetException("Plaintext contains invalid character: "+p);
if (p_ind == -1) {
throw new InvalidCharsetException("Plaintext contains invalid character: " + p);
}
cyphertext[i] = p;
cypherText[i] = p;
}
return cyphertext;
}
return cypherText;
}
public char[] decrypt(char[] cypherText, char[] key) throws InvalidCharsetException {
public char[] decrypt(char[] cyphertext, char[] key){
char[] plaintext = new char[cyphertext.length];
for (int i = 0; i< cyphertext.length; i++){
char c = cyphertext[i];
char[] plaintext = new char[cypherText.length];
for (int i = 0; i < cypherText.length; i++) {
char c = cypherText[i];
int c_ind = charset.indexOf(c);
if (c_ind == -1){
throw InvalidCharsetException("Cyphertext contains invalid character: "+c);
throw new InvalidCharsetException("Cyphertext contains invalid character: " + c);
}
plaintext[i] = c;
}

View File

@@ -35,8 +35,12 @@ public class RandomStringGenerator {
private final char[] buf;
public RandomStringGenerator(int length, Random random, String charset) {
if (length < 1) throw new IllegalArgumentException();
if (charset.length() < 2) throw new IllegalArgumentException();
if (length < 1) {
throw new IllegalArgumentException();
} else if (charset.length() < 2) {
throw new IllegalArgumentException();
}
this.random = Objects.requireNonNull(random);
this.charset = charset.toCharArray();
this.buf = new char[length];
@@ -46,14 +50,14 @@ public class RandomStringGenerator {
* Create an alphanumeric string generator.
*/
public RandomStringGenerator(int length, Random random) {
this(length, random, alphanum);
this(length, random, ALPHANUMERIC_CHARSET);
}
/**
* Create an alphanumeric string generator using the given charset.
*/
public RandomStringGenerator(int length, String charset) {
this(length, new SecureRandom(), ALPHANUMERIC_CHARSET);
this(length, new SecureRandom(), charset);
}
@@ -61,7 +65,7 @@ public class RandomStringGenerator {
* Create an alphanumeric strings from a secure generator.
*/
public RandomStringGenerator(int length) {
this(length, new SecureRandom(),ALPHANUMERIC_CHARSET);
this(length, new SecureRandom(), ALPHANUMERIC_CHARSET);
}
/**

View File

@@ -9,55 +9,70 @@ public abstract class ShiftSubstitutionCypher implements Cypher {
}
public ShiftSubstitutionCypher(){
this(RandomStringGenerator.alphanum);
}
this(RandomStringGenerator.ALPHANUMERIC_CHARSET);
}
protected abstract char encryptionShiftAt(int position, char[] plaintext, char[] key, char[] partial_cyphertext);
protected abstract char decryptionShiftAt(int position, char[] cyphertext, char[] key, char[] partial_plaintext);
protected abstract char encryptionShiftAt(int position, char[] plaintext, char[] key, char[] partialCypherText);
public char[] encrypt(char[] plaintext, char[] key){
if (key.length==0){
throw InvalidKeyException("Key is empty");
protected abstract char decryptionShiftAt(int position, char[] cypherText, char[] key, char[] partialPlainText);
public char[] encrypt(char[] plainText, char[] key) throws CryptoException {
if (key.length == 0) {
throw new InvalidKeyException("Key is empty");
}
int charset_length = charset.length();
char[] cyphertext = new char[plaintext.length];
for (int i = 0; i< plaintext.length; i++){
char p = plaintext[i];
char k = encryptionShiftAt(i,plaintext,key,cyphertext);
char[] cypherText = new char[plainText.length];
for (int i = 0; i < plainText.length; i++) {
char p = plainText[i];
char k = encryptionShiftAt(i, plainText, key, cypherText);
int p_ind = charset.indexOf(p);
if (p_ind == -1){
throw InvalidCharsetException("Plaintext contains invalid character: "+p);
}
int k_ind = charset.indexOf(k);
if (k_ind == -1){
throw InvalidCharsetException("Key contains invalid character: "+k);
}
int c_int = (p_ind+k_ind)%charset_length;
char c = charset.charAt(c_int);
cyphertext[i] = c;
}
return cyphertext;
}
public char[] decrypt(char[] cyphertext, char[] key){
if (key.length==0){
throw InvalidKeyException("Key is empty");
}
int charset_length = charset.length();
char[] plaintext = new char[cyphertext.length];
for (int i = 0; i< cyphertext.length; i++){
char c = cyphertext[i];
char k = decryptionShiftAt(i,cyphertext,key,plaintext);
int c_ind = charset.indexOf(c);
if (c_ind == -1){
throw InvalidCharsetException("Cyphertext contains invalid character: "+c);
if (p_ind == -1) {
throw new InvalidCharsetException("Plaintext contains invalid character: " + p);
}
int k_ind = charset.indexOf(k);
if (k_ind == -1){
throw InvalidCharsetException("Password contains invalid character: "+k);
if (k_ind == -1) {
throw new InvalidCharsetException("Key contains invalid character: " + k);
}
int p_int = (c_ind-k_ind)%charset_length;
char p = charset.charAt(p_int);
int c_int = (p_ind + k_ind) % charset.length();
char c = charset.charAt(c_int);
cypherText[i] = c;
}
return cypherText;
}
public char[] decrypt(char[] cypherText, char[] key) throws CryptoException {
if (key.length == 0) {
throw new InvalidKeyException("Key is empty");
}
char[] plaintext = new char[cypherText.length];
for (int i = 0; i < cypherText.length; i++) {
char c = cypherText[i];
char k = decryptionShiftAt(i, cypherText, key, plaintext);
int cInd = charset.indexOf(c);
if (cInd == -1) {
throw new InvalidCharsetException("CypherText contains invalid character: " + c);
}
int kInd = charset.indexOf(k);
if (kInd == -1) {
throw new InvalidCharsetException("Password contains invalid character: " + k);
}
int pInt = (cInd - kInd) % charset.length();
char p = charset.charAt(pInt);
plaintext[i] = p;
}
return plaintext;

View File

@@ -10,16 +10,20 @@ public class VigenereCypher extends ShiftSubstitutionCypher {
super();
}
@override
protected char encryptionShiftAt(int position, char[] plaintext, char[] key, char[] partial_cyphertext){
int j = i % key.length;
return key[j];
@Override
protected char encryptionShiftAt(int position, char[] plaintext, char[] key, char[] partialCypherText) {
// int j = i % key.length;
// return key[j];
return 0;
}
@override
protected char decryptionShiftAt(int position, char[] cyphertext, char[] key, char[] partial_plaintext){
int j = i % key.length;
return key[j];
@Override
protected char decryptionShiftAt(int position, char[] cypherText, char[] key, char[] partialPlainText) {
// int j = i % key.length;
// return key[j];
return 0;
}
}