Skip to content

Commit

Permalink
REFACT :: Base64 인코딩을 저수준으로 이전
Browse files Browse the repository at this point in the history
  • Loading branch information
Daybreak312 committed May 8, 2024
1 parent aa458c8 commit d34bcc0
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 18 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
package com.info.maeumgagym.security.cryption

/**
* Base64로 인코딩된 AES 암호화문을 복호화하는 클래스
*
* @see Encrypt 암호화 클래스
*
* @author Daybreak312
* @since 02-05-2024
*/
interface Decrypt {

fun decrypt(encrypted: ByteArray, key: String): ByteArray
fun decrypt(encrypted: String, key: String): String
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
package com.info.maeumgagym.security.cryption

/**
* 평문 문자열을 AES로 암호화 및 Base64로 인코딩해 반환하는 암호화 클래스
*
* @see Decrypt 복호화 클래스
*
* @author Daybreak312
* @since 02-05-2024
*/
interface Encrypt {

fun encrypt(unencrypted: ByteArray, key: String): ByteArray
fun encrypt(unencrypted: String, key: String): String
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.info.maeumgagym.security.cryption.impl
import com.info.maeumgagym.security.cryption.Decrypt
import com.info.maeumgagym.security.cryption.Encrypt
import org.springframework.stereotype.Component
import java.util.*
import javax.crypto.Cipher
import javax.crypto.spec.SecretKeySpec

Expand All @@ -13,16 +14,24 @@ class Crypt : Encrypt, Decrypt {
const val DEFAULT_CRYPTO_ALGORITHM = "AES"
}

override fun encrypt(unencrypted: ByteArray, key: String): ByteArray {
override fun encrypt(unencrypted: String, key: String): String {
val cipher = getCipher(Cipher.ENCRYPT_MODE, key)

return cipher.doFinal(unencrypted)
val encrypted = cipher.doFinal(unencrypted.encodeToByteArray())

return Base64.getEncoder().encodeToString(
encrypted
)
}

override fun decrypt(encrypted: ByteArray, key: String): ByteArray {
override fun decrypt(encrypted: String, key: String): String {
val cipher = getCipher(Cipher.DECRYPT_MODE, key)

return cipher.doFinal(encrypted)
val base64Decoded = Base64.getDecoder().decode(encrypted)

val decrypted = cipher.doFinal(base64Decoded)

return decrypted.decodeToString()
}

private fun getCipher(mode: Int, key: String): Cipher {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import com.info.maeumgagym.security.mgtoken.MaeumgagymTokenDecoder
import com.info.maeumgagym.security.mgtoken.env.MaeumgagymTokenProperties
import com.info.maeumgagym.security.mgtoken.vo.MaeumgagymToken
import org.springframework.stereotype.Component
import java.util.*

/**
* Docs는 상위 타입에 존재.
Expand All @@ -29,15 +28,9 @@ internal class MaeumgagymTokenDecoderImpl(
}

override fun decode(token: String, key: String): MaeumgagymToken {
val tokenByteArray = Base64.getDecoder().decode(
resolveTokenPrefix(token)
)
val decrypted = decrypt.decrypt(resolveTokenPrefix(token), key)

val decrypted = decrypt.decrypt(tokenByteArray, key)

return stringTokenToVO(
decrypted.decodeToString()
)
return stringTokenToVO(decrypted)
}

private fun resolveTokenPrefix(token: String): String {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,7 @@ internal class MaeumgagymTokenEncoderImpl(
private fun encryptToken(token: MaeumgagymToken): String {
val tokenString = objectMapper.writeValueAsString(token)

return Base64.getEncoder().encodeToString(
encrypt.encrypt(tokenString.encodeToByteArray(), maeumgagymTokenProperties.secretKey)
)
return encrypt.encrypt(tokenString, maeumgagymTokenProperties.secretKey)
}

private fun appendTokenPrefix(token: String) =
Expand Down

0 comments on commit d34bcc0

Please sign in to comment.