目次
- はじめに
- 実装方法
- まとめ
はじめに
暗号化と復号化について説明します。
暗号化
データを第三者が解読できないように一定のルールのもとに変換することです。
復号
暗号化されたデータを元に戻すことです。
暗号化するケースとしてはパスワードがあげられます。
暗号化によって、権限の無い照会や使用からデータを保護します。
そこで今回はデータの暗号化および復号についてご紹介したいと思います。
実装方法
上のテキストに入力し、右にある「暗号化および復号」ボタンを押すと
Output Encrypt
に暗号化されたデータが
Output Decrypt
に復号されたデータが表示されます。
②モジュールの作成
暗号化と復号をするためのモジュールを作成します。
- encryptData.jp:暗号化および復号を行います。
-
左上のタブが
Project
になっていることを確認し、Modules
の右側にあるボタンをクリックしてください。
③encryptData.js
の設定
では、encryptData.jsに設定していきます。
const encryptData= function(){
// 暗号化
const encryptData = function (data, key) {
try {
// 暗号化キーの生成
var encryptDecryptKey = kony.crypto.newKey("passphrase", 128, {
passphrasetext: [key],
subalgo: "aes",
passphrasehashalgo: "md5"
});
var properties = {
padding: "pkcs5",
mode: "cbc",
initializationvector: "1234567890123456"
};
var encryptedData = kony.crypto.encrypt("aes", encryptDecryptKey, data, properties);
return (encryptedData);
} catch (exception) {
kony.print(JSON.stringify(exception));
}
};
// 復号
const decryptData = function (data, key) {
try {
// 復号化キーの生成
var encryptDecryptKey = kony.crypto.newKey("passphrase", 128, {
passphrasetext: [key],
subalgo: "aes",
passphrasehashalgo: "md5"
});
var properties = {
padding: "pkcs5",
mode: "cbc",
initializationvector: "1234567890123456"
};
var decryptedData = kony.crypto.decrypt("aes", encryptDecryptKey, data, properties);
var clas = Object.prototype.toString.call(decryptedData).slice(8, -1);
if(clas === "Object"){
decryptedData = "";
}
return decryptedData;
} catch (exception) {
kony.print(JSON.stringify(exception));
}
};
return {
encryptData : encryptData,
decryptData : decryptData,
};
}();
上を説明します。
kony.crypto.newKey:このAPIを使用すると、指定したアルゴリズムを使用して暗号化用のキーを作成できます。このAPIを使用して作成されたキーは、平文(暗号化されていないデータ)の暗号化と暗号化されたデータの復号化に使用されます。
入力パラメータ(algo、keystrength、propertiesTable)について簡単に記載します。
algo:キーを作成するためのスキーム
パラメータ | 説明 |
---|---|
securerandom | キーを生成するスキームとして安全な乱数を使用。このスキームは常に一意のキーを生成。 |
random | キーを生成するためのスキームとして乱数を使用。このスキームは常に一意のキーを生成。 |
passphrase | 同じパスフレーズの場合、常に同じキーを生成。 |
※ randomおよびsecurerandomはiPhoneでのみサポートされています。
※ Androidでは、securerandomとrandomの違いはありません。
※ SPAではパスフレーズのみがサポートされています。
keystrength:キーの強さを示すビット数
名称 | 説明 |
---|---|
aes | 可能な値は128、192、256 |
tripledes | 可能な値は192 |
propertiesTable:プロパティ値
プロパティ値 | 説明 |
---|---|
passphrasetext | [文字列の配列]:パスフレーズ。 |
subalgo | キーの作成に使用されるキーアルゴリズム。入力可能な値はaesとtripledes |
passphrasehashlogo | パスフレーズテキストに適用されるハッシュアルゴリズム。入力可能な値はmd2(キー強度128の場合)、md4(キー強度128の場合)、md5(キー強度128の場合)、sha2(キー強度256の場合) |
kony.crypto.encrypt:指定されたキーとアルゴリズムを使用して入力テキストを暗号化します。
入力パラメータ(algo、generatekey、inputstring、propertiesTable)について簡単に記載します。
algo:入力文字列を暗号化する必要があるアルゴリズムを指定
入力可能な値はaes,tripledes,rsaとなります。
※ tripledesはWindowsプラットフォームではサポートされていません。
generatekey:暗号化に使用されるキー
tripledes:暗号化する必要のあるデータ
propertiesTable:プロパティ値
プロパティ値 | 説明 |
---|---|
padding | 適用する必要のあるパディングを示す文字列 |
mode | 暗号化モードを表す文字列 |
initializationvector | 使用される初期化ベクトルを示す文字列 |
kony.crypto.decrypt:指定されたキーとアルゴリズムを使用して入力テキストを復号します。
入力パラメータ(algo、generatekey、encryptedRawbytes、propertiesTable)について簡単に記載します。
algo:復号化するアルゴリズムを指定
入力可能な値はaes,tripledes,rsaとなります。
※ tripledesはWindowsプラットフォームではサポートされていません。
generatekey:復号化に使用されるキーを保持
encryptedRawbytes:復号化される暗号化されたテキストのrawバイトを含むオブジェクト
propertiesTable:プロパティ値
プロパティ値 | 説明 |
---|---|
padding | 適用する必要のあるパディングを示す文字列 |
mode | 暗号化モードを表す文字列 |
initializationvector | 復号化の実行に使用される初期化ベクトルを示す文字列 |
④frmDemoController.js
の設定とアクションの紐付け
では、frmDemoController.jsを設定していきます。
define({
CONST_KEY_ENCRYPT: 'key_encrypt',
onClickEncrypt: function () {
var data = this.view.txtData.text;
if (data) {
this.view.lblOutputEncrypt.text = encryptData.encryptData(data, this.CONST_KEY_ENCRYPT);
this.view.lblOutputDecrypt.text = encryptData.decryptData(this.view.lblOutputEncrypt.text, this.CONST_KEY_ENCRYPT);
}
}
});
暗号化および復号
ボタンをクリックし、Action
にあるonClick
をクリックしてください。
Invoke Functionを選択し、onClickEncrypt
を設定しましょう。
ここまでで、データの暗号化および復号の準備が完了しました。
次に実際にどうなるかみていきましょう!
⑤実装の確認
— Kony (@Kony12763790) January 5, 2021
暗号化および復号されていることが分かりますね!
まとめ
今回は、データの暗号化および復号する方法を説明しました。
暗号化しないといけないような機密データを扱う際に参考にしていただけたらと思います。
暗号化と復号もKonyでしたら可能です!
ぜひ試してみてください
参考
暗号化と復号について:
https://www.kumikomi.jp/encrypt/
kony.theme Namespaceの説明:
https://docs.kony.com/konylibrary/visualizer/viz_widget_prog_guide/Content/Button_Events.htm#onClick
kony.cryptoの説明:
https://docs.kony.com/konylibrary/visualizer/viz_api_dev_guide/content/kony.crypto_functions.htm#encrypt