728x90
A파일이 암호화 되어 있으니 복호화하여 사용하라고 하셔서 받은 키로 복호화를 진행 하였으나 키가 맞지 않는다는 오류가 발생했다.
키가 동일함에도 불구하고 키가 맞지 않는다는 오류가 뜬다면 아래와 같이 해결한다.
1. 키 세팅을 알아본다.
암호화 방식이 복호화 방식과 동일한지 확인하고 그것 또한 동일한 경우 키 세팅을 알아본다.
나의 경우 키 세팅을 별도로 하지 않고 바로 복호화 처리 했었음
public byte[] AESEncrypt256_File(string filePath, string key)
{
RijndaelManaged aes = new RijndaelManaged();
aes.KeySize = 256;
aes.BlockSize = 128;
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = Encoding.UTF8.GetBytes(key.Substring(0, 16));
var encrypt = aes.CreateEncryptor(aes.Key, aes.IV);
byte[] xBuff = null;
using (var ms = new MemoryStream())
{
using (var cs = new CryptoStream(ms, encrypt, CryptoStreamMode.Write))
{
byte[] xXml = File.ReadAllBytes(filePath);
cs.Write(xXml, 0, xXml.Length);
}
xBuff = ms.ToArray();
}
return xBuff;
}
나중에 보니 암호화 할 때 위와 같이 키 세팅이 되어 있었다.
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKeySpec secretKeySpec = new SecretKeySpec(token.substring(0, 32).getBytes(StandardCharsets.UTF_8), "AES");
IvParameterSpec ivParameterSpec = new IvParameterSpec(iv.getBytes(StandardCharsets.UTF_8));
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec);
그래서 위와 같이 나도 키 설정을 해 줬다.
AES/CBC/PKCS5Padding 는 iv를 사용하고
AES/EBC/PKCS5Padding 는 iv를 사용하지않아서 EBC로 넘기면 iv 사용하지않는다고 오류가 뜨니, 어렵지 않게 설정이 가능하다.
생각보다 별거 아니었던 복호화!
728x90
'Java > 실무' 카테고리의 다른 글
[Tomcat] 서버에만 올리면 한글이 깨지는 현상 고치기 (0) | 2024.10.14 |
---|---|
poi 로 엑셀 다운로드 구현하기 (1) | 2024.09.10 |
로그인 체크 + 메인 보내기 (0) | 2024.09.09 |
컨트롤러에서 웹 서비스 접근 시 Header에 토큰 붙여서 전송하는 법 (0) | 2024.06.21 |
[Java] List<Map<String,Object>> 에서 HashMap<String,Object>으로 변환하기 (0) | 2023.12.01 |