Crypto - AES
AES encrypt and decrypt
by jinam yu
HTML
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/aes.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app">
<form class="p-4">
<div class="form-group">
<label>암호화에 사용할 키를 입력해 보세요.</label>
<input type="text" class="form-control" v-model="key" />
</div>
<div class="form-group">
<div class="input-group mb-3">
<div class="input-group-prepend">
<div class="btn-group mr-2" role="group" aria-label="Second group">
<button type="button" class="btn" :class="(encode?'btn-primary':'btn-secondary')" @click="encode = true;">Encrypt</button>
<button type="button" class="btn" :class="(!encode?'btn-primary':'btn-secondary')" @click="encode = false;">Decrypt</button>
</div>
</div>
<input type="text" class="form-control" v-model="str" />
</div>
</div>
<div class="form-group">
<input class="form-control" type="text" :value="output" readonly />
</div>
</form>
</div>
CSS
html, body {
background-color: #f8f9fa;
}
Vue
new Vue({
el: "#app",
data: {
key: "v;mr;3w'+eNC@;f6",
str: "Sample",
encode: true,
},
computed: {
output(){
let res = window.CryptoJS.AES[(this.encode ? 'encrypt' : 'decrypt')](this.str, this.key);
if(!this.encode) return res.toString(CryptoJS.enc.Utf8);
return res;
}
},
methods: {},
mounted() {}
})