반응형
AES256 CBC NoPadding UTF-8
Javascript Code
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
</head>
<body>
</body>
</html>
<script type="text/javascript" src="https://cdn.rawgit.com/ricmoo/aes-js/e27b99df/index.js"></script>
<script>
var key = "abcdefghijklmnopqrstuvxyz0123456"; // 32byte
// The initialization vector (must be 16 bytes)
var iv = [ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,35, 36 ];
// Convert text to bytes (text must be a multiple of 16 bytes)
var text = '아무거나내맘대로2342ㄴㅇㄹ2123132';
var textBytes = aesjs.utils.utf8.toBytes(text);
var mod = textBytes.length % 16;
if(mod % 16 != 0) {
text += ''.padStart(16 - mod);
textBytes = aesjs.utils.utf8.toBytes(text);
}
var aesCbc = new aesjs.ModeOfOperation.cbc(aesjs.utils.utf8.toBytes(key), iv);
var encryptedBytes = aesCbc.encrypt(textBytes);
// To print or store the binary data, you may convert it to hex
var encryptedHex = aesjs.utils.hex.fromBytes(encryptedBytes);
document.body.append(encryptedHex);
document.body.innerHTML+="<br/>";
var encryptedBytes = aesjs.utils.hex.toBytes(encryptedHex);
// The cipher-block chaining mode of operation maintains internal
// state, so to decrypt a new instance must be instantiated.
var aesCbc = new aesjs.ModeOfOperation.cbc(aesjs.utils.utf8.toBytes(key), iv);
var decryptedBytes = aesCbc.decrypt(encryptedBytes);
// Convert our bytes back into text
var decryptedText = aesjs.utils.utf8.fromBytes(decryptedBytes).trim();
document.body.append(decryptedText);
</script>
Result
Java Code
Result
89f6b98a14f642d2408346a0d5044b8eb3c15b86bbb496851f0363e0de633b3c3ed8004a80ece6ffbc7dfc0ef1f417bd
아무거나내맘대로2342ㄴㅇㄹ2123132
* trim을 주의하세요.
CBC NoPadding 으로 16바이트 단위를 맞춰야해서 원래 문자열 뒤에 공백으로 16바이트 단위를 맞추고 복호화 할때 다시 그 공백을 trim으로 제거합니다.
원래 문자열 뒤에 공백이 있었다면 그 공백은 제거됩니다.
반응형
'스크립트' 카테고리의 다른 글
jquery 확장 enter key function (0) | 2018.11.05 |
---|---|
javascript cookie getCookie setCookie (0) | 2018.11.05 |
netstat unique ip (0) | 2018.09.10 |
javascript java rsa (0) | 2018.08.13 |
ajax multiple parameter request list (0) | 2018.07.24 |
javascript object size (0) | 2018.07.23 |
jquery ajax ie no transport error (0) | 2018.07.17 |
윈도우 netstat grep wc 포트 커넥션 확인 (0) | 2018.07.09 |