Browse Source

[LDRA] 585 S : 동일한 데이터에 대한 비트와 연산 - 연산식 수정

feature/ldra
leehagjoon(이학준) 11 months ago
parent
commit
5e8b8a2339
  1. 15
      src/main/java/com/palnet/comn/encrptn/kisa/KISA_SEED_CBC.java
  2. 10
      src/main/java/com/palnet/comn/encrptn/kisa/KISA_SHA256.java

15
src/main/java/com/palnet/comn/encrptn/kisa/KISA_SEED_CBC.java

@ -164,8 +164,9 @@ public class KISA_SEED_CBC {
// R0, R1 : right input values at each round
// K : round keys at each round
private static final void SeedRound(int[] T, int LR[], int L0, int L1, int R0, int R1, int[] K, int K_offset) {
T[0] = LR[R0] ^ K[K_offset+0];
T[1] = LR[R1] ^ K[K_offset+1];
int offset = K_offset + 1;
T[0] = LR[R0] ^ K[K_offset];
T[1] = LR[R1] ^ K[offset];
T[1] ^= T[0];
T[1] = SS0[GetB0(T[1])&0x0ff] ^ SS1[GetB1(T[1])&0x0ff] ^
SS2[GetB2(T[1])&0x0ff] ^ SS3[GetB3(T[1])&0x0ff];
@ -870,10 +871,13 @@ public class KISA_SEED_CBC {
}
public static void byte_to_int(int[] dst, int dst_offset, byte[] src, int src_offset, int ENDIAN) {
int offset1 = src_offset + 1;
int offset2 = src_offset + 2;
int offset3 = src_offset + 3;
if(ENDIAN == BIG_ENDIAN) {
dst[dst_offset] = ((0x0ff&src[src_offset]) << 24) | ((0x0ff&src[src_offset+1]) << 16) | ((0x0ff&src[src_offset+2]) << 8) | ((0x0ff&src[src_offset+3]));
dst[dst_offset] = ((0x0ff&src[src_offset]) << 24) | ((0x0ff&src[offset1]) << 16) | ((0x0ff&src[offset2]) << 8) | ((0x0ff&src[offset3]));
} else {
dst[dst_offset] = ((0x0ff&src[src_offset])) | ((0x0ff&src[src_offset+1]) << 8) | ((0x0ff&src[src_offset+2]) << 16) | ((0x0ff&src[src_offset+3]) << 24);
dst[dst_offset] = ((0x0ff&src[src_offset])) | ((0x0ff&src[offset1]) << 8) | ((0x0ff&src[offset2]) << 16) | ((0x0ff&src[offset3]) << 24);
}
}
@ -921,7 +925,8 @@ public class KISA_SEED_CBC {
if(n >= 32)
return 0;
int v = x >> n;
int v_mask = ~(0x80000000 >> (n-1));
int shift = n - 1;
int v_mask = ~(0x80000000 >> shift);
return v & v_mask;
}

10
src/main/java/com/palnet/comn/encrptn/kisa/KISA_SHA256.java

@ -322,10 +322,13 @@ public class KISA_SHA256 {
}
public static void byte_to_int(int[] dst, int dst_offset, byte[] src, int src_offset, int ENDIAN) {
int offset1 = src_offset + 1;
int offset2 = src_offset + 2;
int offset3 = src_offset + 3;
if(ENDIAN == BIG_ENDIAN) {
dst[dst_offset] = ((0x0ff&src[src_offset]) << 24) | ((0x0ff&src[src_offset+1]) << 16) | ((0x0ff&src[src_offset+2]) << 8) | ((0x0ff&src[src_offset+3]));
dst[dst_offset] = ((0x0ff&src[src_offset]) << 24) | ((0x0ff&src[offset1]) << 16) | ((0x0ff&src[offset2]) << 8) | ((0x0ff&src[offset3]));
} else {
dst[dst_offset] = ((0x0ff&src[src_offset])) | ((0x0ff&src[src_offset+1]) << 8) | ((0x0ff&src[src_offset+2]) << 16) | ((0x0ff&src[src_offset+3]) << 24);
dst[dst_offset] = ((0x0ff&src[src_offset])) | ((0x0ff&src[offset1]) << 8) | ((0x0ff&src[offset2]) << 16) | ((0x0ff&src[offset3]) << 24);
}
}
@ -373,7 +376,8 @@ public class KISA_SHA256 {
if(n >= 32)
return 0;
int v = x >> n;
int v_mask = ~(0x80000000 >> (n-1));
int shift = n - 1;
int v_mask = ~(0x80000000 >> shift);
return v & v_mask;
}

Loading…
Cancel
Save