javascript 암복호화 처리
javascript로 암복호화 처리용 모듈이 있다.
CryptoJS
download : https://code.google.com/archive/p/crypto-js/downloads
암축을 풀어서 rollups\aes.js 파일 사용
<script type="text/javascript" src="aes.js"></script>
// sample 소스
var key = "Secret Passphrase";
var text = "Message1234";
document.write(CryptoJS.AES.encrypt(text, key));
document.write("<br>");
document.write(CryptoJS.AES.decrypt(CryptoJS.AES.encrypt(text, key), key).toString(CryptoJS.enc.Utf8));
인코딩은 utf8로 되어 있다. (인코딩이 다르면 깨질수 있음)
iv도 넣을수 있음.
var key = CryptoJS.enc.Hex.parse('000102030405060708090a0b0c0d0e0f');
var iv = CryptoJS.enc.Hex.parse('101112131415161718191a1b1c1d1e1f');
var encrypted = CryptoJS.AES.encrypt("Message", key, { iv: iv });
암호화 된것을 java에서 풀수도 있다.
byte[] key = new byte[]{(byte)0x00, (byte)0x01, (byte)0x02, (byte)0x03, (byte)0x06, ~~~~~~~~
byte[] encData = new byte[]{(byte)0x76, (byte)0xb3, (byte)0x93, (byte)0x79, (byte)0xf4, (byte)0xca, ~~~~
SecretKey sk = new SecretKeySpec(key, "AES");
AlgorithmParameterSpec paramSpec = new IvParameterSpec(iv);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, sk, paramSpec);
byte[] decData = cipher.doFinal(encData);
java와 연계는 테스트 해보지 않았음.
"AES/CBC/PKCS5Padding" 방식이 같으면 가능할것이라 생각함.