소스 정리

master
이범준 3 weeks ago
parent 03c332e6d1
commit bb9eb4b64f

@ -6,8 +6,8 @@ import java.nio.ByteOrder;
/** /**
* @author leebj * @author leebj
*/ */
class Delphi { interface Delphi {
static int move(byte[] source, int sourceFrom){ default int move(byte[] source, int sourceFrom){
byte[] b = new byte[4]; byte[] b = new byte[4];
b[0] = source[sourceFrom]; b[0] = source[sourceFrom];
b[1] = source[sourceFrom+1]; b[1] = source[sourceFrom+1];
@ -17,7 +17,7 @@ class Delphi {
return _bytesToInt_le(b); return _bytesToInt_le(b);
} }
static void move(int sourceInt, byte[] target, int targetFrom){ default void move(int sourceInt, byte[] target, int targetFrom){
byte[] source = _intToBytes_le(sourceInt); byte[] source = _intToBytes_le(sourceInt);
int j = targetFrom; int j = targetFrom;
@ -27,7 +27,7 @@ class Delphi {
} }
} }
static void move(byte[] source, int sourceFrom, byte[] target, int targetFrom, int size){ default void move(byte[] source, int sourceFrom, byte[] target, int targetFrom, int size){
int i = sourceFrom; int i = sourceFrom;
int j = targetFrom; int j = targetFrom;
for(int z=0; z < size; z++) { for(int z=0; z < size; z++) {
@ -37,27 +37,36 @@ class Delphi {
} }
} }
static void move(byte[] source, int sourceFrom, int[] targetIntArray, int size){ default void move(byte[] source, int sourceFrom, int[] targetIntArray, int size){
byte[] byteTarget = new byte[targetIntArray.length]; byte[] byteTarget = new byte[targetIntArray.length];
move(source,sourceFrom,byteTarget,0,size); move(source,sourceFrom,byteTarget,0,size);
_convertIntArray(byteTarget, targetIntArray); _convertIntArray(byteTarget, targetIntArray);
} }
static void move(int[] sourceIntArray, byte[] target, int targetFrom, int size){ default void move(int[] sourceIntArray, byte[] target, int targetFrom, int size){
byte[] byteSource = new byte[sourceIntArray.length]; byte[] byteSource = new byte[sourceIntArray.length];
_convertByteArray(sourceIntArray, byteSource); _convertByteArray(sourceIntArray, byteSource);
move(byteSource,0,target,targetFrom,size); move(byteSource,0,target,targetFrom,size);
} }
static int inc(int num, int incNum) { default int inc(int num, int incNum) {
return num + incNum; return num + incNum;
} }
static byte[] setLength(int len) { default byte[] setLength(int len) {
return new byte[len]; return new byte[len];
} }
private static void _convertIntArray(byte[] b, int[] n){ default void _convertIntArray(int[] n){
for(int j = 0; j < n.length; j++ ) {
if(n[j] < 0)
n[j] = n[j] + 256;
else
n[j] = n[j];
}
}
default void _convertIntArray(byte[] b, int[] n){
for(int j = 0; j < b.length; j++ ) { for(int j = 0; j < b.length; j++ ) {
if(b[j] < 0) if(b[j] < 0)
n[j] = b[j] + 256; n[j] = b[j] + 256;
@ -66,17 +75,17 @@ class Delphi {
} }
} }
private static void _convertByteArray(int[] n, byte[] b){ default void _convertByteArray(int[] n, byte[] b){
for(int j = 0; j < n.length; j++ ) { for(int j = 0; j < n.length; j++ ) {
b[j] = (byte)n[j]; b[j] = (byte)n[j];
} }
} }
private static byte[] _intToBytes_le(int num) { default byte[] _intToBytes_le(int num) {
return ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(num).array(); return ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(num).array();
} }
private static int _bytesToInt_le(byte[] byteArray) { default int _bytesToInt_le(byte[] byteArray) {
return ByteBuffer.wrap(byteArray).order(ByteOrder.LITTLE_ENDIAN).getInt(); return ByteBuffer.wrap(byteArray).order(ByteOrder.LITTLE_ENDIAN).getInt();
} }
} }

@ -11,7 +11,7 @@ import cokr.xit.foundation.AbstractComponent;
/** /**
* @author leebj * @author leebj
*/ */
public class XitBridge extends AbstractComponent { public class XitBridge extends AbstractComponent implements Delphi {
private int[] masterKey = new int[32]; private int[] masterKey = new int[32];
private int keySize; private int keySize;
private String private String
@ -323,7 +323,7 @@ public class XitBridge extends AbstractComponent {
hash = inMD5(key = value); hash = inMD5(key = value);
} }
Delphi.move(hash, 0, masterKey, hash.length); move(hash, 0, masterKey, hash.length);
} catch (Exception e) { } catch (Exception e) {
throw runtimeException(e); throw runtimeException(e);
} }
@ -384,13 +384,13 @@ public class XitBridge extends AbstractComponent {
encryptSize = value_byte.length; encryptSize = value_byte.length;
if(version == 1) { if(version == 1) {
encryptData = Delphi.setLength(encryptSize); encryptData = setLength(encryptSize);
Delphi.move(value_byte,0,encryptData,0,encryptSize); move(value_byte,0,encryptData,0,encryptSize);
} else { } else {
encryptData = Delphi.setLength(encryptSize + 4); encryptData = setLength(encryptSize + 4);
Delphi.move(encryptSize, encryptData, 0); move(encryptSize, encryptData, 0);
Delphi.move(value_byte,0,encryptData,4,encryptSize); move(value_byte,0,encryptData,4,encryptSize);
} }
@ -401,20 +401,20 @@ public class XitBridge extends AbstractComponent {
start = 1; start = 1;
if(version == 1) { if(version == 1) {
cryptData = Delphi.setLength(dataSize); cryptData = setLength(dataSize);
} else { } else {
cryptData = Delphi.setLength(dataSize + 16 - (dataSize % 16)); cryptData = setLength(dataSize + 16 - (dataSize % 16));
} }
for(i = 1; i <= Math.floorDiv(dataSize,16); i++) { for(i = 1; i <= Math.floorDiv(dataSize,16); i++) {
Arrays.fill(inBlock, 0); Arrays.fill(inBlock, 0);
Arrays.fill(outBlock, 0); Arrays.fill(outBlock, 0);
Delphi.move(encryptData, start-1, inBlock, 16); move(encryptData, start-1, inBlock, 16);
doEncrypt(inBlock, roundNum, roundKey, outBlock); doEncrypt(inBlock, roundNum, roundKey, outBlock);
Delphi.move(outBlock,cryptData,start-1,16); move(outBlock,cryptData,start-1,16);
start = Delphi.inc(start,16); start = inc(start,16);
} }
//나머지크기 //나머지크기
@ -422,9 +422,9 @@ public class XitBridge extends AbstractComponent {
Arrays.fill(inBlock, 0); Arrays.fill(inBlock, 0);
Arrays.fill(outBlock, 0); Arrays.fill(outBlock, 0);
Delphi.move(encryptData,start-1,inBlock,modSize); move(encryptData,start-1,inBlock,modSize);
doEncrypt(inBlock, roundNum, roundKey, outBlock); doEncrypt(inBlock, roundNum, roundKey, outBlock);
Delphi.move(outBlock,cryptData,start-1,16); move(outBlock,cryptData,start-1,16);
} }
if(encode) { if(encode) {
@ -464,16 +464,16 @@ public class XitBridge extends AbstractComponent {
roundNum = decKeySetup(masterKey, roundKey); roundNum = decKeySetup(masterKey, roundKey);
start = 1; start = 1;
encryptData = Delphi.setLength(dataSize); encryptData = setLength(dataSize);
for (i = 1; i <= Math.floorDiv(dataSize, 16); i++) { for (i = 1; i <= Math.floorDiv(dataSize, 16); i++) {
Arrays.fill(inBlock, 0); Arrays.fill(inBlock, 0);
Arrays.fill(outBlock, 0); Arrays.fill(outBlock, 0);
Delphi.move(cryptData,(start-1),inBlock,16); move(cryptData,(start-1),inBlock,16);
doEncrypt(inBlock, roundNum, roundKey, outBlock); doEncrypt(inBlock, roundNum, roundKey, outBlock);
Delphi.move(outBlock,encryptData,start-1,16); move(outBlock,encryptData,start-1,16);
start = Delphi.inc(start,16); start = inc(start,16);
} }
@ -481,9 +481,9 @@ public class XitBridge extends AbstractComponent {
Arrays.fill(inBlock, 0); Arrays.fill(inBlock, 0);
Arrays.fill(outBlock, 0); Arrays.fill(outBlock, 0);
Delphi.move(cryptData,(start-1),inBlock,16); move(cryptData,(start-1),inBlock,16);
doEncrypt(inBlock, roundNum, roundKey, outBlock); doEncrypt(inBlock, roundNum, roundKey, outBlock);
Delphi.move(outBlock,encryptData,start-1,16); move(outBlock,encryptData,start-1,16);
} }
@ -498,9 +498,9 @@ public class XitBridge extends AbstractComponent {
return new String(encryptData, charset); return new String(encryptData, charset);
} else { } else {
encryptSize = Delphi.move(encryptData,0); encryptSize = move(encryptData,0);
byte[] copy = new byte[encryptSize]; byte[] copy = new byte[encryptSize];
Delphi.move(encryptData,4,copy,0,encryptSize); move(encryptData,4,copy,0,encryptSize);
return new String(copy, charset); return new String(copy, charset);
} }
@ -509,15 +509,6 @@ public class XitBridge extends AbstractComponent {
} }
} }
private static void _convertIntArray(int[] n){
for(int j = 0; j < n.length; j++ ) {
if(n[j] < 0)
n[j] = n[j] + 256;
else
n[j] = n[j];
}
}
private static int[][] SBox = { private static int[][] SBox = {
// S-box type 1 // S-box type 1
{ {

Loading…
Cancel
Save