view source

JavaScript

/*

https://github.com/brix/crypto-js

<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/pbkdf2.js"></script>
*/

var text = 'いろはにほへと';
var salt = 'GOMA';
$(function(){
  var wrap = $('#demo');
  var form = $('<form>');
  var input = $('<input>').val(text).attr({placeholder:'暗号化したい文字列'});
  var $salt = $('<input>').val(salt).attr({placeholder:'暗号化強化のためのランダム値(SALT )'});
  var output = $('<textarea>');
  var inputRe = $('<input>');
  var inputRe2 = $('<input>');
  var buttonEnc = $('<button>').text('暗号化');
  var buttonDec = $('<button>').text('復号化');
  var urlKey = $('<input>');

  wrap
    .css({display:'grid',placeContent:'center'});
  wrap
    .append(form);
  form
    .append(input)
    .append($salt)
    .append(buttonEnc)
    .append(output)
    .append(buttonDec)
    .append(inputRe)
    .append(inputRe2)
    .append(urlKey);

  $salt.on('change', function(){
    salt = input.val();
  });

  buttonEnc.on('click', function(){
    var val = input.val();
    var encrypted = CryptoJS.AES.encrypt(val, salt);
    output.val(encrypted);
    return false;
  });
  buttonDec.on('click', function(){
    var val = output.val();
    var decrypted = CryptoJS.AES.decrypt(val, salt);
    inputRe.val(decrypted);
    inputRe2.val(decrypted.toString(CryptoJS.enc.Utf8));
    return false;
  });

//URLに組み込む際は+がスペースになるので注意 置換必要

  var searchParams = new URLSearchParams(location.search);
  console.log(searchParams);
  console.log(searchParams.get('key'));
  let key = decodeURI(searchParams.get('key')) || 'U2FsdGVkX18OXIJ6fmPpOV+hm8+OHjaCadvQuD2WqN0=';
  key = key.replace(/ /img,'+');
  console.log(key);
  let decodeKey = CryptoJS.AES.decrypt(key, salt);
  console.log(decodeKey);
  decodeKey = decodeKey.toString(CryptoJS.enc.Utf8);
  console.log(decodeKey);
  urlKey.val(decodeKey);


  var getURLKEY = function(){
    var searchParams = new URLSearchParams(location.search);
    let key = decodeURI(searchParams.get('key'));
    key = key.replace(/ /img,'+');
    let decodeKey = CryptoJS.AES.decrypt(key, salt);
    decodeKey = decodeKey.toString(CryptoJS.enc.Utf8);
    return decodeKey;
  }


});

CSS

HTML

ページのソースを表示 : Ctrl+U , DevTools : F12

view-source:https://hi0a.com/demo/-js/js-encript-CryptoJS/

ABOUT

hi0a.com 「ひまアプリ」は無料で遊べるミニゲームや便利ツールを公開しています。

プログラミング言語の動作デモやWEBデザイン、ソースコード、フロントエンド等の開発者のための技術を公開しています。

必要な機能の関数をコピペ利用したり勉強に活用できます。

プログラムの動作サンプル結果は画面上部に出力表示されています。

環境:最新のブラウザ GoogleChrome / Windows / Android / iPhone 等の端末で動作確認しています。

画像素材や音素材は半分自作でフリー素材配布サイトも利用しています。LINK参照。

動く便利なものが好きなだけで技術自体に興味はないのでコードは汚いです。

途中放置や実験状態、仕様変更、API廃止等で動かないページもあります。