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() {}
})