暗号化方式
AES、TKIP、WEPなど色々なアルゴリズムがありますが、今回はAESで暗号化します。モードはCBC。
キーのみで暗号/複号
var CryptoJS = require('crypto-js');
var pwd = "password";
function Encrypt(word) {
return CryptoJS.AES.encrypt(word, pwd).toString();
}
function Decrypt(word) {
return CryptoJS.AES.decrypt(word, pwd).toString(CryptoJS.enc.Utf8);
}
var origin = 'test';
console.log(origin);
var mm = Encrypt(origin);
console.log(mm);
var jm = Decrypt(mm);
console.log(jm);
キーとIVで暗号/複号
var CryptoJS = require('crypto-js');
var key = CryptoJS.enc.Utf8.parse('0123456789abcede');
var iv = CryptoJS.enc.Utf8.parse('1234567812345678');
function Encrypt(word) {
srcs = CryptoJS.enc.Utf8.parse(word);
var encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
return encrypted.ciphertext.toString().toUpperCase();
}
function Decrypt(word) {
var encryptedHexStr = CryptoJS.enc.Hex.parse(word);
var srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
var decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
return decryptedStr.toString();
}
var origin = 'test';
console.log(origin);
var mm = Encrypt(origin);
console.log(mm);
var jm = Decrypt(mm);
console.log(jm)
その他
「javascript側で暗号化→同じjavascript側で復号」ケースだけではなく、
「javascript/python/java側で暗号化->javascript/python/java側で復号」ケースにも活用できます。